在使用GBase 8a数据库时,有时使用not exists会导致sql耗时较长,且执行过程张产生大量的临时空间。not exists 需要两表关联,当关联字段不同值很少,表数据量较大,(表数据量2000多万,该列distinct值只有上百个),会导致产生大量临时文件。改成not in后效率有较大提高,但是需要加上关联字段不为空的条件。
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)