什么时候用好SELECT DISTINCT ..,什么时候不好用?
基本上,每当我看到DISTINCT关键字时,我就会开始变得谨慎,因为大多数情况下最终会发现实际查询存在一些问题(选择性不够、连接不良、逻辑不正确等)。
你有类似的经历还是只是我?
Pau*_*ite 14
SELECT DISTINCT有时表明有人“修复”了一个以天真的方式返回重复行的查询。这种(错误)使用在那些数据库经验相对较少的人中可能更常见。
也就是说,有些人(例如 Chris Date)认为 ;DISTINCT应该是SELECT;的默认限定符。我们应该编写SELECT ALL返回非关系结果(关系不包含定义重复的元组)。
我的看法是没有什么本质上错SELECT DISTINCT。它可以是表达查询的最自然的方式。如果执行计划和性能是可以接受的,我认为没有合理的理由强制要求永远不要使用它。
同时,DISTINCT在复杂查询的顶层简单地添加以在后期消除重复项显然是错误的,此时应该更有效地简单地编写查询。