使用 DISTINCT 关键字从多个表中获取数据时的性能如何



我很想知道当我们使用 DISTINCT 关键字通过多个表查询数据时,sqldeveloper 究竟是如何完成这项工作的。

我问这个问题的原因是因为我看到当我使用 DISTINCT 关键字时,sqldeveloper 需要花费大量时间才能获取我的结果

当您指定select distinct时,数据库需要经历删除重复值的努力。

在少数情况下,select中的所有列/表达式可能都在索引中。 如果是这样,Oracle 应该足够聪明地使用该索引。 在这种情况下,select distinct可能不会对性能产生很大影响。

否则,数据库需要聚合数据。select distinctgroup by相同的算法。 它们有很多,但它们肯定会比不使用select distinct慢.

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

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

最新更新