使用DISTINCT对SQL查询执行计划的查询成本有很大影响吗?
在一个包含100,000行的表格中,它们之间有什么区别:
select * from TABLE
和
select distinct(*) from TABLE
以毫秒计?
答案 0 :(得分:4)
通常,答案是很多毫秒。 select distinct
相当于在所有列上执行group by
。您不可能在所有列上都有索引,因此索引通常不会非常有用。
某些数据库引擎可能足够聪明,可以检测其中一列是声明distinct
还是primary key
。在这种情况下,可能会有一个优化查询的引擎。
但是,一般情况下,除非您需要,否则应避免使用select distinct
。