Oracle使用Order By后性能缓慢,该怎么处理
Oracle使用Order By后性能缓慢
各位好!
我在Oracle执行一段SQL,查询的结果大概有2万多条记录。如果不在Order by 语句的时候,查询的时间不到20S。但是如果如果加上Order By 子句,查询的性能就特别差,要十多分钟。请问这个应该怎么去优化?
------解决思路----------------------
排序的字段上增加索引试试吧
------解决思路----------------------
是在pl/sql dev上执行的吧,20秒查询出来的只是第一页?加上排序,就必须先把所有结果都计算出来
------解决思路----------------------
附上执行计划、语句及涉及的表的说明(数据量)、还有条件中字段的选择性
------解决思路----------------------
个人认为,合理的索引并不是把order by 后的所有字段都添加到索引里
------解决思路----------------------
曾经也遇到过,可以考虑索引 还是由效果的 另外看看是不是没有用的字段不要显示并加好限制条件。
------解决思路----------------------
先把你的sql和执行计划贴出来,才能具体分析问题。
------解决思路----------------------
排序要用到PGA或临时表空间,适当的增加这两个地方的空间有利于排序,不过有一点要提醒,排序对程序员来说,是打两个单词,对数据库来说,是一项繁重的任务,能不排序,就不排序,如果可能放到应用程序中去排序。
------解决思路----------------------
调整PGA,要是PGA无法放下整个排序数据,就要用到虚拟内存,也就是磁盘,肯定会比较慢的
另外,可以考虑加 HINT试试
各位好!
我在Oracle执行一段SQL,查询的结果大概有2万多条记录。如果不在Order by 语句的时候,查询的时间不到20S。但是如果如果加上Order By 子句,查询的性能就特别差,要十多分钟。请问这个应该怎么去优化?
------解决思路----------------------
排序的字段上增加索引试试吧
------解决思路----------------------
是在pl/sql dev上执行的吧,20秒查询出来的只是第一页?加上排序,就必须先把所有结果都计算出来
------解决思路----------------------
附上执行计划、语句及涉及的表的说明(数据量)、还有条件中字段的选择性
------解决思路----------------------
个人认为,合理的索引并不是把order by 后的所有字段都添加到索引里
------解决思路----------------------
曾经也遇到过,可以考虑索引 还是由效果的 另外看看是不是没有用的字段不要显示并加好限制条件。
------解决思路----------------------
先把你的sql和执行计划贴出来,才能具体分析问题。
------解决思路----------------------
排序要用到PGA或临时表空间,适当的增加这两个地方的空间有利于排序,不过有一点要提醒,排序对程序员来说,是打两个单词,对数据库来说,是一项繁重的任务,能不排序,就不排序,如果可能放到应用程序中去排序。
------解决思路----------------------
调整PGA,要是PGA无法放下整个排序数据,就要用到虚拟内存,也就是磁盘,肯定会比较慢的
另外,可以考虑加 HINT试试