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)
热门帖子
- 12025-12-01浏览数:182764
- 22023-05-09浏览数:25062
- 42023-09-25浏览数:18526
- 52020-05-11浏览数:17529