SQL查询 - 使用DISTINCT的成本

Gae*_*ano 6 sql database distinct query-optimization

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

在一个包含100,000行的表中,两者之间会有什么不同:

select * from TABLE
Run Code Online (Sandbox Code Playgroud)

和 

select distinct(*) from TABLE 
Run Code Online (Sandbox Code Playgroud)

以毫秒计? 

Gor*_*off 5

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

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

但是,一般情况下,select distinct除非需要,否则应避免使用。