SQL 查询 - 使用 DISTINCT 的成本

SQL query - cost of using DISTINCT

DISTINCT 的使用对 SQL 查询执行计划的查询成本有很大影响吗?

在具有 100,000 行的 table 上,两者之间会有什么区别:

select * from TABLE

select distinct(*) from TABLE 

以毫秒为单位?

一般来说,答案是很多毫秒。 select distinct 相当于对所有列执行 group by。您不太可能在所有列上都有索引,因此索引通常不会很有用。

某些数据库引擎可能足够智能,可以检测其中一列是否声明为 distinctprimary key。在那种情况下,可能有一个优化查询的引擎。

但是,一般来说,除非需要,否则您应该避免使用 select distinct