Oracle不走索引hint,加hints不走索引(位图索引)

各位大神

从测试平台迁移到正式平台,处理一个存储过程变得异常缓慢,最终锁定是一个语句执行特别慢

DELETE FROM BILL_DETAIL_TMP T WHERE T.BILL_PLAT = :B3 AND T.BILL_TYPE = :B2 AND T.MIN_HCODE = :B1

对比执行计划,发现正式平台需要执行全表扫描,而测试上就直接通过位图索引IDX1就可以了

发现测试平台和正式平台表结构一样,索引也一样

重新分析了表和索引,没有效果,甚至重建了索引还是不走这个索引,还有这个不是B-Tree索引,不应该是有非空数据造成的,而且这个表是不会有空数据的

非常郁闷!!!

以下是测试和正式的执行计划对比,请诸位出手

【测试】

DELETE FROM BILL_DETAIL_TMP T WHERE T.BILL_PLAT = :B3 AND T.BILL_TYPE = :B2 AND T.MIN_HCODE = :B1

DELETE STATEMENT, GOAL = ALL_ROWS                        Cost=1        Cardinality=1        Bytes=132

DELETE        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP

TABLE ACCESS BY INDEX ROWID        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP        Cost=1        Cardinality=1        Bytes=132

BITMAP CONVERSION TO ROWIDS

BITMAP INDEX SINGLE VALUE        Object owner=FEE_BILL        Object name=IDX1_BILL_DETAIL_TMP

【测试】

DELETE  /*+INDEX(BILL_DETAIL_TMP IDX1_BILL_DETAIL_TMP)*/FROM BILL_DETAIL_TMP T WHERE T.BILL_PLAT = :B3 AND T.BILL_TYPE = :B2 AND T.MIN_HCODE = :B1

DELETE STATEMENT, GOAL = ALL_ROWS                        Cost=1        Cardinality=1        Bytes=132

DELETE        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP

TABLE ACCESS BY INDEX ROWID        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP        Cost=1        Cardinality=1        Bytes=132

BITMAP CONVERSION TO ROWIDS

BITMAP INDEX SINGLE VALUE        Object owner=FEE_BILL        Object name=IDX1_BILL_DETAIL_TMP

【正式】

DELETE FROM BILL_DETAIL_TMP T WHERE T.BILL_PLAT = :B3 AND T.BILL_TYPE = :B2 AND T.MIN_HCODE = :B1

DELETE STATEMENT, GOAL = ALL_ROWS                        Cost=1145        Cardinality=1        Bytes=68

DELETE        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP

TABLE ACCESS FULL        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP        Cost=1145        Cardinality=1        Bytes=68

【正式】

DELETE  /*+INDEX(BILL_DETAIL_TMP IDX1_BILL_DETAIL_TMP)*/FROM BILL_DETAIL_TMP T WHERE T.BILL_PLAT = :B3 AND T.BILL_TYPE = :B2 AND T.MIN_HCODE = :B1

DELETE STATEMENT, GOAL = ALL_ROWS                        Cost=1145        Cardinality=1        Bytes=68

DELETE        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP

TABLE ACCESS FULL        Object owner=FEE_BILL        Object name=BILL_DETAIL_TMP        Cost=1145        Cardinality=1        Bytes=68

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值