ORACLE10g查询性能的提升

做了一个提升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月份
原文地址:https://www.cnblogs.com/echo/p/329508.html