sql中使用函数导致cost高

问题SQL:
SELECT DJXH,

       GDSLX_DM,
       SSDABH,
       NSRSBH,
       NSRMC,
       KZZTDJLX_DM,
       DJZCLX_DM,
       FDDBRXM,
       FDDBRSFZJLX_DM,
       SCJYDZ,
       FDDBRSFZJHM,
       SCJYDZXZQHSZ_DM,
       NSRZT_DM,
       HY_DM,
       ZCDZ,
       ZCDZXZQHSZ_DM,
       JDXZ_DM,
       DWLSGX_DM,
       GDGHLX_DM,
       DJJG_DM,
       DJRQ,
       ZZJG_DM,
       KQCCSZTDJBZ,
       ZGSWJ_DM,
       ZGSWSKFJ_DM,
       SSGLY_DM
  FROM hx_dj.DJ_DDRXX DDRXX
 WHERE FDDBRSFZJLX_DM = '201'
   AND REGEXP_replace(FDDBRSFZJHM, '[^a-zA-Z0-9]', '') = '362427197708217318'
   AND DDRXX.YXBZ = 'Y';

故障原因:已存在(FDDBRSFZJLX_DM,FDDBRSFZJHM)组合索引,开发人员将FDDBRSFZJHM改成 REGEXP_replace(FDDBRSFZJHM, '[^a-zA-Z0-9]', '') 走以上索引后消耗非常高,导致系统资源     紧张。

故障处理:临时添加(FDDBRSFZJLX_DM,REGEXP_replace(FDDBRSFZJHM, '[^a-zA-Z0-9]', ''))  函数索引。通知开发人员修改SQL。

创建索引时出现ORA-01450: maximum key length (3215) exceeded错误,去掉online参数后正常创建!                                                                                                                                                                 
                                   

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29863023/viewspace-1670600/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29863023/viewspace-1670600/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值