SQL查询-使用DISTINCT的成本

SQL查询-使用DISTINCT的成本,sql,database,query-optimization,distinct,Sql,Database,Query Optimization,Distinct,DISTINCT的使用对SQL查询执行计划的查询成本有很大影响吗 在一个有100000行的表上,以下各项之间会有什么区别: select * from TABLE 及 以毫秒为单位?通常,答案是许多毫秒。selectdistinct相当于对所有列执行groupby。不太可能在所有列上都有索引,因此索引通常不是很有用 某些数据库引擎可能足够智能,可以检测其中一列是声明为独立的还是声明为主键。在这种情况下,可能会有一个优化查询的引擎 但是,一般来说,除非您需要,否则您应该避免使用select di

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

在一个有100000行的表上,以下各项之间会有什么区别:

select * from TABLE

以毫秒为单位?

通常,答案是许多毫秒。
selectdistinct
相当于对所有列执行
groupby
。不太可能在所有列上都有索引,因此索引通常不是很有用

某些数据库引擎可能足够智能,可以检测其中一列是声明为
独立的
还是声明为
主键
。在这种情况下,可能会有一个优化查询的引擎


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

如果您在该表上有一个键,则两者之间不会有任何区别。由于您选择的是所有字段,因此键会使每一行都不同
distinct
不是一个函数,我认为它会有一些不同,因为distinct检查是否存在任何差异,但选择all NOT。这将是一个主要差异。数据库必须对所有列上的所有行进行排序或散列。只要看看执行计划,你就会明白。但是,没有办法用毫秒来量化额外的成本。取决于硬件、列数和列的数据类型。
select distinct(*) from TABLE