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

优化orderby语句

数据库排序在很多业务系统都有这方面的硬性要求,但是很多情况下大数据表的排序查询很是缓慢,查了下资料,现在总结如下:

可以适当调大 sort_area_size 的值( 10240000=10m )

alter system set sort_area_size=10240000 scope=spfile;  

在10G中也可以直接调大PGA的最大值

alter system set pga_aggregate_target=512m scope=spfile ;

?

但这样做也只是提高了一点排序性能,还是达不到系统速度要求,查询要快,要见索引,所以我们帮排序字段建立上索引,但是要让orderby能调用到索引还需要一些严格的条件:

ORDER BY中所有的列必须包含在相同的索引中并保持在索引中的排列顺序.
ORDER BY中所有的列必须定义为非空.

当我们设好以后,orderby的速度变得很快,完全达到系统的要求,1张400万数据的表用时间排序只需要几十毫秒。

?

但是在实际应用中还是有些问题,还需进一步研究。