oracle 性能优化操作三:增加查询的范围限制
增加查询的范围限制,避免全范围的搜索。
例:以下查询表record 中时间ActionTime小于2001年3月1日的数据:
select * from record where ActionTime < to_date ('20010301' ,'yyyymm');
查询计划表明,上面的查询对表进行全表扫描,如果我们知道表中的最早的数据为2001年1月1日,那么,可以增加一个最小时间,
使查询在一个完整的范围之内。修改如下:
select * from record where ActionTime < to_date ('20010301' ,'yyyymm') and ActionTime > to_date ('20010101' ,'yyyymm');
后一种SQL语句将利用上ActionTime字段上的索引,从而提高查询效率。
把‘20010301‘换成一个变量,根据取值的机率,可以有一半以上的机会提高效率。
同理,对于大于某个值的查询,如果知道当前可能的最大值,也可以在Where子句中加上 “AND 列名< MAX(最大值)”。
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。