最近在测试分区表以及索引的效率问题。昨天一直在测试,今天早上来又开始了测试,但是很奇怪的是,今天的查询和昨天的查询执行计划出现了奇怪的差别。
我建了两个一模一样的分区表tb_jx_index_his_test1和tb_jx_index_his_test2(首先是以r_time做月份分区,再用另外一个字段进行组合分区),只是索引建的不一样,其中tb_jx_index_his_test1在r_time,index_code上建了局部索引,而tb_jx_index_his_test2在r_time,index_code全局索引。
下面是昨天的查询计划:
SQL> select * from tb_jx_index_his_test1 where r_time>=to_date('2008-7-20 0:00:00','yyyy-mm-dd hh24:
mi:ss') and r_time
2 and index_code='K1_1_zk';
已选择17424行。
已用时间: 00: 00: 08.43
执行计划
----------------------------------------------------------
Plan hash value: 3033047581
----------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Pstart| Pstop |
----------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 3778 | 0 (0)| | |
| 1 | PARTITION RANGE ITERATOR | | 1 | 3778 | | 4 | 5 |
| 2 | PARTITION LIST ALL | | 1 | 3778 | | 1 | 10 |
| 3 | TABLE ACCESS BY LOCAL INDEX ROWID| TB_JX_INDEX_HIS_TEST1 | 1 | 3778 | | 31 | 5
|* 4 | INDEX RANGE SCAN | INX_INDEX_HIS_TEST1 | 1 | | | 31 | 50 |
--------------------------------------------------