select fpex.* from F ,
d d
where f.org_id=d.org_id
and f.stat_date>=to_date('2010-01-01','yyyy-mm-dd')
and f.stat_date<=to_date('2010-03-31','yyyy-mm-dd')
and d.troop_name='三部'
f表对stat_date建有索引,f表是通过stat_date进行分区的,d表对org_id建有索引
现在这个sql不执行索引,不太明白为什么,请高手给分析下!
d d
where f.org_id=d.org_id
and f.stat_date>=to_date('2010-01-01','yyyy-mm-dd')
and f.stat_date<=to_date('2010-03-31','yyyy-mm-dd')
and d.troop_name='三部'
f表对stat_date建有索引,f表是通过stat_date进行分区的,d表对org_id建有索引
现在这个sql不执行索引,不太明白为什么,请高手给分析下!
d
where f.org_id=d.org_id
and f.stat_date>=to_date('2010-01-01','yyyy-mm-dd')
and f.stat_date<=to_date('2010-03-31','yyyy-mm-dd')
and d.troop_name='三部'
sql是这样,上面可能有的地方没改好
对相关表做下分析,在看看:
analyze table tablename compute statistics;Oracle 10g Statistic数据统计
http://blog.csdn.net/tianlesoftware/archive/2009/10/15/4668723.aspx------------------------------------------------------------------------------
Blog: http://blog.csdn.net/tianlesoftware
网上资源: http://tianlesoftware.download.csdn.net
相关视频:http://blog.csdn.net/tianlesoftware/archive/2009/11/27/4886500.aspx
DBA1 群:62697716(满); DBA2 群:62697977
DBA3 群:63306533; 聊天 群:40132017
where f.stat_date>=to_date('2010-01-01','yyyy-mm-dd')
and f.stat_date<=to_date('2010-03-31','yyyy-mm-dd')这样执行,也不走索引,难道查找范围数据,索引不起作用?
不一定是什么时候用索引都是最快的~
所以ORACLE优化器有时候不一定执行索引扫描——
你居然把表分区了,尽管是全表扫描,都不会太慢~
而且表分区应该是分布在各个磁盘上的,分区的数量与服务器CPU有关。