我试图做一个简单的SQL查询:提高查询
SELECT DISTINCT id
FROM marketing
WHERE type = 'email'
AND id NOT IN (
SELECT id
FROM marketing
WHERE type = 'letter'
)
ORDER BY id;
这需要很长的时间来运行,我认为它与在WHERE语句选择做(有大量的ID),但我不能想出一个方法来改善它。
首先,这可能是查询速度如此之慢的原因,其次是如何改进它的建议?
编辑:
数据库系统:MySQL的
标识被索引,但是却并不在此表的主键;它是一个外键。
你的表有多大,'type'有索引? – nacholibre 2013-05-09 19:59:03
'WHERE type ='email''和'WHERE type ='letter''似乎是多余的。你基本上说类型必须是“电子邮件”,但是再次检查它不是“字母”。你不能只拿出嵌套的SELECT? – 2013-05-09 19:59:36
整个'不在'位似乎是多余的。如果你用'type ='email''找到了一条记录,那么它怎么可能在'type ='letter''的记录列表中呢? – 2013-05-09 20:00:17