【发布时间】:2014-06-04 19:15:46
【问题描述】:
我现在有一个生产中的应用程序进行 MySQL 查询以选择一个表中没有另一个表中的关联行的列 为此,我目前正在使用一个 MySQL 存在查询,该查询似乎变得更慢并且添加的结果越多,速度越慢。
这是当前查询的示例:
SELECT m.ig_media_id, m.media_promotion_id FROM media_promotions m
WHERE m.likes_received < m.likes_requested
AND m.user_id != 19
AND m.active = 1
AND NOT EXISTS
(SELECT * from media_actions m_a WHERE m_a.user_id = 19 AND m_a.ig_media_id = m.ig_media_id)
ORDER BY m.created_at ASC
LIMIT 1
我能做些什么来加快这个速度?它目前以大约 3 秒的速度运行,并且确实减慢了我的应用程序。
【问题讨论】:
-
SELECT *通常是一个坏主意(对于 Mysql 中的 (NOT) EXISTS 子查询,它不计算在内),那么也许在不必要的时候使用子查询是另一个。 -
发布
EXPLAIN SELECT ...的输出会有帮助。 -
@JoshuaMartell 为什么 NOT EXISTS SELECT 语句表是什么很重要?我只是不希望它满足 WHERE 要求。而且,当我在该 select 语句中选择单个列时,查询会变得更慢。
标签: php mysql performance join exists