ITPub博客

首页 > 数据库 > Oracle > sql中使用函数导致cost高

sql中使用函数导致cost高

原创 Oracle 作者:darren__chan 时间:2015-05-25 12:22:10 0 删除 编辑
问题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博客 ” ,链接:https://blog.itpub.net/29863023/viewspace-1670600/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
一思尚存,此志不懈

注册时间:2014-09-09

  • 博文量
    210
  • 访问量
    1344274