Cha*_*tta 4 sql sql-server query-performance
我正在寻找一个答案,从一个列(约50k记录的表)我只需要检查该列是否至少有两个不同的值.
Select Count(Distinct ColumnA)
from tableX
Run Code Online (Sandbox Code Playgroud)
上面的查询给了我输出,但它不是优化的方式,因为我只想要一个布尔的答案
即计数是否超过1或否?
另外,tableX中记录增加的数量会使查询性能恶化,我正在寻找与表记录计数无关的东西.任何帮助表示赞赏:)谢谢.
SELECT CASE
WHEN COUNT(*) = 2 THEN 'Yes'
ELSE 'No'
END
FROM (SELECT DISTINCT TOP 2 ColumnA
FROM tableX
WHERE ColumnA IS NOT NULL) T
Run Code Online (Sandbox Code Playgroud)
可能会给你一个计划,在DISTINCT找到前两个值后停止处理.
检查执行计划是否使用流聚合或a,HASH MATCH (FLOW DISTINCT)因为它们都是非阻塞的.如果将DISTINCT其实现为a HASH MATCH,(FLOW DISTINCT)那么这将是阻塞,并且仍将处理所有行.
例如,这两个计划都停止而不处理所有行.
| 归档时间: |
|
| 查看次数: |
505 次 |
| 最近记录: |