SQL 查询 - 使用 DISTINCT 的成本
SQL query - cost of using DISTINCT
DISTINCT 的使用对 SQL 查询执行计划的查询成本有很大影响吗?
在具有 100,000 行的 table 上,两者之间会有什么区别:
select * from TABLE
和
select distinct(*) from TABLE
以毫秒为单位?
一般来说,答案是很多毫秒。 select distinct
相当于对所有列执行 group by
。您不太可能在所有列上都有索引,因此索引通常不会很有用。
某些数据库引擎可能足够智能,可以检测其中一列是否声明为 distinct
或 primary key
。在那种情况下,可能有一个优化查询的引擎。
但是,一般来说,除非需要,否则您应该避免使用 select distinct
。
DISTINCT 的使用对 SQL 查询执行计划的查询成本有很大影响吗?
在具有 100,000 行的 table 上,两者之间会有什么区别:
select * from TABLE
和
select distinct(*) from TABLE
以毫秒为单位?
一般来说,答案是很多毫秒。 select distinct
相当于对所有列执行 group by
。您不太可能在所有列上都有索引,因此索引通常不会很有用。
某些数据库引擎可能足够智能,可以检测其中一列是否声明为 distinct
或 primary key
。在那种情况下,可能有一个优化查询的引擎。
但是,一般来说,除非需要,否则您应该避免使用 select distinct
。