使用 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 distinctgroup by 可以使用相同的算法。有很多,但是肯定比不用select distinct.

另一个因素是,在从结果集中删除重复项之前,数据库不会 return 任何 结果。在其他情况下,数据库可以在可用时开始删除行。

您应该只在确实需要时才使用 select distinct,因为您知道 运行 查询会产生开销。