有人可以向我解释为什么当我按日期将asc或desc命令放入任何查询语句时。它会大大减慢性能吗?
通常声明就像这样
select * from table where ... order by modified_data asc
缓解此问题的最佳方法是什么?我按日期删除订单的那一刻,性能会提高很多。
答案 0 :(得分:4)
这取决于查询计划,索引中的modified_date
以及您拥有的其他谓词。但是,通常,添加ORDER BY
要求Oracle在返回结果之前对结果进行排序。反过来,这通常要求Oracle在返回任何行之前完全实现结果集。如果您要测量返回第一行所需的时间,而不是返回最后一行所需的时间,则会放大效果。
这不是一般的缓解问题。如果需要排序结果集,则会产生排序结果集的开销。否则,你没有。在特定情况下,可能会添加一些索引,这些索引将允许Oracle按排序顺序获取结果,而不是对结果进行物理排序。但这取决于您未提及的一系列特定于查询的因素。
答案 1 :(得分:1)
排序需要花费时间,尤其是必须首先构建整个结果集,然后才能开始排序。如果字段modified_data
将被编入索引,则情况并非如此。
答案 2 :(得分:0)
尝试在表的id上创建索引。如果您不需要所有列,也可以在select列中更改select *。