GBase 8a
性能调优
文章

GBase 8a 性能优化方法分享(5)not exists导致产生大量的临时空间

发表于2024-06-21 09:09:4453次浏览2个评论

not exists 需要两表关联,当关联字段不同值很少,表数据量较大,(表数据量2000多万,该列distinct值只有上百个),会导致产生大量临时文件。改成not in后效率有较大提高,但是需要加上关联字段不为空的条件。例如sql:

select 1 

from D_METER d

WHERE t_METER_ID = d.METER_ID

AND NOT exists

(SELECT a.MR_DIGIT FROM C_METER_READ a

WHERE a.METER_ID = t_METER_ID

and d.METER_DIGITS=a.MR_DIGIT)

解决办法:

对sql进行改写:

改写后:

select 1

      from D_METER d

      WHERE t_METER_ID = d.METER_ID

         AND d.METER_DIGITS NOT IN

           (SELECT a.MR_DIGIT

           FROM C_METER_READ a

           WHERE a.METER_ID = t_METER_ID

            AND a.MR_DIGIT IS NOT NULL)

评论

登录后才可以发表评论
用户头像
levvel发表于 5个月前
来报个到
崔哥发表于 2个月前
荷叶罗裙一色裁,芙蓉向脸两边开。乱入池中看不见,闻歌始觉有人来。