order by 子句对性能有负面影响吗?

Asc*_*ant 6 performance oracle order-by

我无法通过谷歌搜索找到答案。

我只是听到一个高级开发人员告诉初级开发人员使用 order by 子句对性能有负面影响,他不应该使用它(Oracle)。

在什么情况下 order by 子句会对性能产生负面影响?

更新

我发现由于 ORDER BY 子句导致 SQL 查询性能不佳。是否有其他情况下 order by 条款可能会对性能产生负面影响?

Bil*_*hor 8

一个ORDER BY如果以检索数据没有可用指数条款将随时添加排序操作。对于较大的数据集,可以将正在排序的数据写入磁盘,增加额外的处理。对于使用索引的较小结果集,可能不需要排序步骤。

如果需要排序,数据库将必须检索所有排序键数据并在呈现结果之前对其进行排序。这会延迟第一行的可用性。如果您只需要大型集合的前几行,这会为数据库生成大量额外工作。

话虽如此,我很少看到一个ORDER BY条款对性能产生重大影响。我记得有一个案例,开发人员试图通过检索未排序的结果集并在客户端对其进行排序来提高性能,但效果不佳。

ORDER BY除非要求数据以给定的顺序出现,否则我会避免使用该条款。如果需要按给定顺序显示数据,我会使用该ORDER BY子句。如果有关于性能的问题,我会在测试替代方案之前针对生产数据库测试查询。