Oracle: 通过一个案例重新认识index range scan以及复合索引的创建

1. 概述

本文的执行计划问题其实是由于统计信息的问题,而本文的主要目的是重新认识一下index range scan以及复合索引。结论是前导列在where条件中不适合出现范围条件,这个在以前有提到过:“Oracle BTREE索引创建一般性经验(主要是前3条)”

2. 索引和表信息:

TABLE_NAME     INDEX_NAME            INDEXED_COLUMNS    PARTITIONED     INDEX_MB   TABLE_MB
-------------- --------------------- ------------------ ------------- ---------- ----------
T_DATECHAR     T_DATECHAR_NI5_NEW    CHRDT,pdr_no       NO VISIBLE         40000     223200
T_DATECHAR     T_DATECHAR_NI6_NEW    pdr_no,CHRDT       NO VISIBLE         35137     223200

注:
CHRDT的值是类似于’20210305’的形式。两个索引只是列的顺序不同。
PDR_NO是distinct值较多的字段。

3. 两个类似SQL的执行计划与区别

3.1 SQL1 CHRDT为范围条件

SELECT WXYZ.org_jrn_no
  FROM XOWNER.T_DATECHAR WXYZ
 WHERE WXYZ.pdr_no = '123432410643'
   AND WXYZ.ac_typ = '808'
   AND CHRDT >= '20210305'
   AND CHRDT <= '20210307'
   AND WXYZ.oth_no != '03');
   
 Execution Plan
--------------------------------------------------------------------------------------------------
| Id  | Operation                   | Name               | Rows  | Bytes | Cost (%CPU)| Time     |
--------------------------------------------------------------------------------------------------
|   0 | SELECT STATEMENT            |                    |    10 |   440 |     5   
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值