【问题标题】:Query not using not exist查询不使用不存在
【发布时间】:2014-01-09 16:42:48
【问题描述】:

如何用不存在的方式重写下面的查询,性能比不存在的更好

SELECT m.member
  FROM  member        m
 WHERE 1 = 1
   AND NOT EXISTS (
       SELECT NULL
         FROM history c
            , tender  t
      WHERE 1 = 1
        AND c.card_type        =  t.tender_type
        AND c.member           =  m.member
       AND 1 = 1 )
    AND 1 = 1;

感谢您的所有帮助。

【问题讨论】:

  • 我正在尝试提高使用查询的进程的性能。会员表有1000万+条记录,查询带出历史表中不存在的会员列表,招标/来源为LEV
  • 从成员 m 中选择 m.member,其中 1 = 1 且不存在(从历史 c 中选择 NULL,tender t WHERE 1 = 1 AND c.card_type = t.tender_type AND c.member = m。成员 AND t.client_type = 'LEV' AND 1 = 1 ) AND 1 = 1;

标签: not-exists


【解决方案1】:

您还没有描述您要解决的问题。

您似乎正在尝试获取没有历史记录的成员列表?

select 
    m.member
from 
    member m
    left join history c on c.member = m.member
where
    c.member is null

对您的问题进行澄清可能会有所帮助。您能否提供表格的 DDL 并用英文解释您希望查询返回什么?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-01-13
    • 2013-05-13
    • 2014-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多