oracle强制走全表查询,很奇怪,怎么查询不走索引?而是全表扫描?

博主在对比测试分区表tb_jx_index_his_test1和tb_jx_index_his_test2的查询效率时,发现原本使用索引的查询变为全表扫描。虽然表结构和索引设置相同,但今天执行同样的查询却不再走索引,导致查询效率下降。问题可能涉及索引使用策略、分区策略或统计信息的变化。
摘要由CSDN通过智能技术生成

最近在测试分区表以及索引的效率问题。昨天一直在测试,今天早上来又开始了测试,但是很奇怪的是,今天的查询和昨天的查询执行计划出现了奇怪的差别。

我建了两个一模一样的分区表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 |

--------------------------------------------------

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值