繁体   English   中英

MySQL性能不佳且查询不存在

[英]MySQL Poor Performance with Not Exists Query

我现在有一个正在生产中的应用程序,该应用程序可以执行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秒,确实使我的应用程序变慢。

这是子查询:

NOT EXISTS (SELECT *
            from media_actions m_a
            WHERE m.user_id = 19 AND m_a.ig_media_id = m.ig_media_id
           )

您可以使用索引来加快速度:

create index idx_media_actions on media_actions(ig_media_id, user_id)

您也可以这样表达:

NOT EXISTS (SELECT 1
            from media_actions m_a
            WHERE m.user_id = 19 AND m_a.ig_media_id = m.ig_media_id
           )

但是,我认为MySQL足够聪明,可以忽略此类子查询中的*

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM