使用 DISTINCT 关键字从多个表中获取数据时的性能如何
What is the Performance while fetching data from multiple tables using DISTINCT keyword
我很好奇,当我们使用 DISTINCT 关键字通过多个表查询数据时,sqldeveloper 究竟是如何完成这项工作的。
我问这个的原因是因为我看到当我使用 DISTINCT 关键字时 sqldeveloper 需要很多时间来获取我的结果
当您指定 select distinct
时,数据库需要完成删除重复值的工作。
在少数情况下,select
中的所有columns/expressions可能都在一个索引中。如果是这样,Oracle 应该足够聪明地使用索引。在这种情况下,select distinct
可能不会对性能产生太大影响。
否则,数据库需要聚合数据。 select distinct
和 group by
可以使用相同的算法。有很多,但是肯定比不用select distinct
.
慢
另一个因素是,在从结果集中删除重复项之前,数据库不会 return 任何 结果。在其他情况下,数据库可以在可用时开始删除行。
您应该只在确实需要时才使用 select distinct
,因为您知道 运行 查询会产生开销。
我很好奇,当我们使用 DISTINCT 关键字通过多个表查询数据时,sqldeveloper 究竟是如何完成这项工作的。
我问这个的原因是因为我看到当我使用 DISTINCT 关键字时 sqldeveloper 需要很多时间来获取我的结果
当您指定 select distinct
时,数据库需要完成删除重复值的工作。
在少数情况下,select
中的所有columns/expressions可能都在一个索引中。如果是这样,Oracle 应该足够聪明地使用索引。在这种情况下,select distinct
可能不会对性能产生太大影响。
否则,数据库需要聚合数据。 select distinct
和 group by
可以使用相同的算法。有很多,但是肯定比不用select distinct
.
另一个因素是,在从结果集中删除重复项之前,数据库不会 return 任何 结果。在其他情况下,数据库可以在可用时开始删除行。
您应该只在确实需要时才使用 select distinct
,因为您知道 运行 查询会产生开销。