Oracle 强制索引 增加搜索效率

本文介绍了一种在Oracle数据库中使用强制索引增加查询效率的方法,通过在SQL语句中添加特定注释来指定查询使用的索引,从而提高搜索速度。文章提供了具体的SQL语句示例,并解释了如何在PLSQL中检查执行计划,确保查询确实利用了所选索引。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Oracle 强制索引 增加搜索效率

通用格式

select 后边追加

/*+ index(表名(或别名 索引名)*/ 

例如

select /*+ index(b IDX_KC24_AAC001)*/akb020,--定点医疗机构编码
       akc190,--住院号(门诊号)
       aae072,--单据号
       aka135 bka135,--交易类型
       to_number(to_char(aae040, 'yyyy')) AAE001,--结算年度
       aac001,--个人编号
       aka130,--医疗类别
       akc021,--医疗人员类别
       bkc021,--医疗待遇类别
       aab001,--参保组织编号
       aae040 ake010,--结算日期
       baa084,--基金类别(医疗)
       akc197 bkc197,--报销标志
       akc336 BKE001,--住院床日
       akc264,--医疗费总额
       akc421 BKC198,--前次是否有中途结算
       akc344 BKC199,--连续住院标志
       akc421 BKC200,--中途结算标志
       '' BAC202,--跨年报销标志
       akc299 BKC203,--欠费结算标志
       '' BKC204,--跨月退费标志
       akc266 AKC266,--帐户冲减日期
       akc267 AKC267,--帐户冲减标志
       aae430 BKB030,--月结流水号
       '' BKC335,--本次结算对应月结算人次
       akc338 BKC328,--审核状态
        CASE
         WHEN nvl(AKC255,0)<>0 THEN
          '账户支付'
         ELSE
         ''
       END  BKC329,--帐户支付标志
       CASE
         WHEN akc021 LIKE '9%' THEN
          '61'
         ELSE
          '31'
       END AAE140,--险种类型
       '' BKA628,--特病分类
       (select akc020 from lzsi.ac01 a where a.aac001 = b.aac001) AAZ500,--社保卡号
       '' BKA627,--危重病标志
       (select aac002 from lzsi.ac01 a where a.aac001 = b.aac001) AAE135,--公民身份号码
       (select aac003 from lzsi.ac01 a where a.aac001 = b.aac001) AAC003,--姓名
       aae100 BKE022--数据状态:1,正常
  from lzsi.kc24_table b
 where aae100 = '1'

执行计划检查

在PLSQL中,"F5"进行查看执行计划
如果发现有“ TABLE ACCESS BY INDEX ROWID ”即,表示数据通过索引获得。
通过objectName可以查看是走的哪条索引

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

何浩翔

如果对你多帮助,请支持。感谢!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值