weixin_46724576 2020-11-27 17:24 采纳率: 100%
浏览 61
已结题

在使用GBase 8a数据库时,有时使用not exists会导致sql耗时较长

在使用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)

  • 写回答

1条回答 默认 最新

  • 生命之源; 2020-11-30 14:24
    关注

    建议您对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)

    h2.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

问题事件

  • 系统已结题 12月7日
  • 已采纳回答 11月29日

悬赏问题

  • ¥35 平滑拟合曲线该如何生成
  • ¥100 c语言,请帮蒟蒻写一个题的范例作参考
  • ¥15 名为“Product”的列已属于此 DataTable
  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 自己瞎改改,结果现在又运行不了了
  • ¥15 链式存储应该如何解决
  • ¥50 成都蓉城足球俱乐部小程序抢票