日期:2014-05-16  浏览次数:20875 次

Oracle SQL查询按照字段排序后性能下降
如下为在PL/SQL中的测试结果

一个查询语句
select * from web_data where devicecode=211011648
执行的时间是0.078s,
而加了排序之后
select * from web_data where devicecode=211011648 order by dataid asc
执行的时间是6.329s

其中dataid是主键,devicecode与dataid都是number类型,且在这两个字段上都加了索引

整个web_data表的记录数是1640542,
满足条件devicecode=211011648的记录数是5443,

请教高人指点如何才能提升排序的性能?




------解决方案--------------------
既然要排序,就需要时间,所以耗时长.
------解决方案--------------------
这个设计调优了
内存中有个排序区, sort_area_size 调调试试
------解决方案--------------------
要排序的话 sql语句只能做到这个程度了 只有从其他角度出发 

------解决方案--------------------
不然分成两层些,先查再排,试试。
select * from(select * from web_data where devicecode=211011648 ) order by dataid asc

或者修改建在dataid上的索引,指定按照升序。