GBase 8a
性能调优
文章

SQL优化案例-减少对字段进行函数处理

发表于2025-04-30 22:12:2839次浏览2个评论

1、优化原理
数据库默认会对每一列创建智能索引,如果对字段使用函数,则不会走智能索引,严重影响sql性能。

2、优化案例

原始sql

select  GJXX.* , RYXX.*  from 

( select TLDP.*,CF.ZDMC CF_ZDMC,CF.SSSFDM CF_SSSFDM,CF.SSSFMC CF_SSSFMC,CF.SSDSDM CF_SSDSDM,CF.SSDSMC CF_SSDSMC,CF.SSQXDM CF_SSQXDM,CF.SSQXMC CF_SSQXMC ,DD.ZDMC DD_ZDMC,DD.SSSFDM DD_SSSFDM,DD.SSSFMC DD_SSSFMC,DD.SSDSDM DD_SSDSDM,DD.SSDSMC DD_SSDSMC,DD.SSQXDM DD_SSQXDM,DD.SSQXMC DD_SSQXMC 

    from 

 (select * from fk_rysc_tldp where date_format(THIS_RKSJ,'%Y-%m-%d %H:%i:%s') >='2018-03-03 09:16:52' ) TLDP   ----956538 hash:id_no

   LEFT JOIN

  (select * from fk_rysc_zd_jtzd where gjlx='GJ02') CF  on TLDP.FROM_STATION_NAME=CF.ZDDM  ---4364 REPLICATED

   LEFT JOIN  

  (select * from fk_rysc_zd_jtzd where gjlx='GJ02') DD  on TLDP.TO_STATION_NAME=DD.ZDDM 

) GJXX

 left join 

( select RY.ID RY_ID, ZJXX.ZJLX RY_ZJLX,ZJXX.ZJH RY_ZJH,RY.GJ RY_GJ,RY.XB RY_XB,RY.XBDM RY_XBDM,RY.MZ RY_MZ,RY.MZDM RY_MZDM,RY.CSRQ RY_CSRQ,RY.JGDM RY_JGDM,RY.JG RY_JG,RY.HJDDM RY_HJDDM,RY.HJD RY_HJD 

    from 

  (select JBXXID,ZJLX,ZJH from fk_rysc_zjxx where ZJLX='111') ZJXX   

left join fk_rysc_ryjbxx RY on ZJXX.JBXXID=RY.ID 

) RYXX  

ON GJXX.ID_NO=RYXX.RY_ZJH )t

order by date_format(GJXX.THIS_RKSJ,'%Y-%m-%d %H:%i:%s') ASC,GJXX.ID  ASC  limit 1,100 ;

改写部分

select  GJXX.* , RYXX.*  from 

( select TLDP.*,CF.ZDMC CF_ZDMC,CF.SSSFDM CF_SSSFDM,CF.SSSFMC CF_SSSFMC,CF.SSDSDM CF_SSDSDM,CF.SSDSMC CF_SSDSMC,CF.SSQXDM CF_SSQXDM,CF.SSQXMC CF_SSQXMC ,DD.ZDMC DD_ZDMC,DD.SSSFDM DD_SSSFDM,DD.SSSFMC DD_SSSFMC,DD.SSDSDM DD_SSDSDM,DD.SSDSMC DD_SSDSMC,DD.SSQXDM DD_SSQXDM,DD.SSQXMC DD_SSQXMC 

    from 

  (select * from fk_rysc_tldp where THIS_RKSJ >='2018-03-03 09:16:52' ) TLDP  

   LEFT JOIN

  (select * from fk_rysc_zd_jtzd where gjlx='GJ02') CF  on TLDP.FROM_STATION_NAME=CF.ZDDM  

   LEFT JOIN  

  (select * from fk_rysc_zd_jtzd where gjlx='GJ02') DD  on TLDP.TO_STATION_NAME=DD.ZDDM 

) GJXX

 

left join 

( select RY.ID RY_ID, ZJXX.ZJLX RY_ZJLX,ZJXX.ZJH RY_ZJH,RY.GJ RY_GJ,RY.XB RY_XB,RY.XBDM RY_XBDM,RY.MZ RY_MZ,RY.MZDM RY_MZDM,RY.CSRQ RY_CSRQ,RY.JGDM RY_JGDM,RY.JG RY_JG,RY.HJDDM RY_HJDDM,RY.HJD RY_HJD 

    from 

  (select JBXXID,ZJLX,ZJH from fk_rysc_zjxx where ZJLX='111') ZJXX  

   left join fk_rysc_ryjbxx RY on ZJXX.JBXXID=RY.ID 

        where   RKSJ>='2018-03-03 09:16:52'

) RYXX  

ON GJXX.ID_NO=RYXX.RY_ZJH 

order by GJXX.THIS_RKSJ ASC,GJXX.ID  ASC LIMIT 1,100;

3、优化效果

优化前

优化后

00:00:40.94

00:00:26.51

评论

登录后才可以发表评论
紫菀发表于 2个月前
学习了
崔哥发表于 1个月前
雨停荷芰逗浓香,岸边蝉噪垂杨。物华空有旧池塘,不逢仙子,何处梦襄王?珍簟对欹鸳枕冷,此来尘暗凄凉。欲凭危槛恨偏长。藕花珠缀,犹似汗凝妆。