做了一个提升ORACLE10g的查询性能的项目。想了很多的办法但是效果都不是很好。期间走了很多的弯路。
把一些心得记载如下:
1、如果查询的数据占总数据的20%以上,索引就不起作用了。

2、用SQL的分页查询和全部查出来在JAVA端分页,开始几页性能差别不大。
只是数据量大的时候,JAVA端游标移动需要的时间很长。
SQL分页的方法:
select * from (select rownum r_id,t.*  from (" + sql + ") t where rownum <= " + intPageStart + ") where r_id >" + intPageSize;

3、JAVA计算记录条数的方法。last操作和next操作到最后的时间基本相同。
记录数多都很耗费时间。
     resultSet.last();
     dataCount = resultSet.getRow();    

4、分区可以提高查询性能
数据要比较平均的分布到不同的分区。
查询条件要和分区相关。根据查询条件缩小需要检索的分区的数量。
举例:
电话清单的表按照城市和年月分区。
pa partd1 大连市 06年1月份
partition partd2 大连市 06年2月份
partition partd3 大连市 06年3月份
...
partition partd12 大连市 06年12月份
 
partition parts1 沈阳市06年1月份
partition parts2 沈阳市06年2月份
partition parts3 沈阳市06年3月份
...
partition parts12 沈阳市06年12月份
posted on 2006-02-13 10:08  坚强的芦苇  阅读(433)  评论(0编辑  收藏  举报