查询全表某列统一值:哪种SQL语句最优?
最优SQL语句分析
已知你的数据表中RefID列所有记录值完全相同,三个查询的性能差异如下:
SELECT DISTINCT RefID FROM Database.dbo.Table:
这个语句会扫描整个表完成去重操作——哪怕所有值都一致,数据库仍会遍历每一条记录确认没有不同值,做了完全没必要的额外工作,性能最差。SELECT TOP 1 RefID FROM Database.dbo.Table:
这是最优选项。数据库只需找到表中的第一条记录,取出RefID就会立刻停止扫描,不需要遍历全表,耗时最少、资源消耗最低。SELECT DISTINCT TOP 1 RefId FROM Database.dbo.Table:
这个语句完全冗余——先执行全表去重,再取第一条结果,既浪费了去重的性能开销,又没比第二个语句多获得任何有用信息,纯粹多此一举。
总结:当确定列中所有值相同时,直接用TOP 1的写法是最高效的。
内容的提问来源于stack exchange,提问作者jen
相关产品推荐
相关产品推荐

