SQL优化案例-分区索引之无前缀索引(六)

本文通过一个SQL优化案例,探讨了无前缀分区索引在Oracle数据库中的应用。在跨分区查询时,未包含分区字段的索引导致查询效率低下。创建包含分区字段的前缀索引后,查询性能显著提升。文章指出,当查询条件包含分区字段时,应考虑创建本地索引;若不包含分区字段,需创建全局索引。作者姚崇是沃趣科技的高级数据库技术专家,擅长Oracle数据库性能调优。
摘要由CSDN通过智能技术生成

无前缀索引:分区索引不包含分区字段就叫无前缀索引,那么什么时候用无前缀索引和前缀索引呢?

SQL文本如下,跨分区查询,分区字段post_date(为保证客户隐私,已经将注释和文字部分去掉):

跨30个分区执行了6分钟。

SELECT /*+index(I IND_DATE_CORRE_AMOUNT_CODE)*/ I.POST_DATE AS JYRQ,
   --I.ACCT_NO AS ZH,
   NVL((SELECT S.ACCT_NO_DESC || S.ACCT_NO_ALL2 FROM INVM_ZMQ S WHERE S.ACCT_NO=I.ACCT_NO AND S.ZHLB='3'),I.ACCT_NO) AS ZH,
   (SELECT C.CUSTOMER_NAME FROM CB_ACCT C WHERE C.SYS_ID='INV' AND C.ACCT_NO=I.ACCT_NO) AS  HM,
   I.TRAN_CODE AS JYDM,
   (SELECT SUBSTR(J.PROFIT_NARR,3,3) 
      FROM JR01_01 J
     WHERE J.POST_DATE=I.POST_DATE AND J.JRNL_NO=I.JRNL_NO AND J.ACCT_NO=I.ACCT_NO AND ROWNUM=1 ) AS XJFXH,
NVL((SELECT S.CURRENCY FROM INVM_ZMQ S WHERE S.ACCT_NO=I.ACCT_NO),I.CURRENCY) AS BZ,
   ABS(I.INCT_01_AMOUNT) AS JYJE,
   I.TELLER_NO AS CZY
FROM INCT_01 I 
WHERE I.POST_DATE BETWEEN T
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值