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参数后正常创建!                                                                                                                                                                 
                                   

请使用浏览器的分享功能分享到微信等