我有一个从数据库中选择视频的查询。
thumbnails表中,每个视频都有多个与其相关联的缩略图。我希望避免在缩略图状态为0、2、3的结果中包含任何视频。我无法加入缩略图表,因为每个视频都有多个状态不同的相关缩略图(每个缩略图)。
这个查询很慢,有没有可能的方法可以优化它?或者有没有一种方法可以在不使用子查询的情况下完成我需要的工作。

SELECT `videos`.`id_video`, `videos`.`date_added`
FROM `videos`
WHERE (`videos`.`status` = 1 AND NOT (`videos`.`id_video` IN (SELECT U1.`id_video` AS Col1 FROM `thumbnails` U1 WHERE U1.`status` IN (0, 2, 3))))
LIMIT 5000;

最佳答案

试试看:

SELECT `videos`.`id_video`, `videos`.`date_added`
FROM `videos`
WHERE `videos`.`status` = 1 AND
    NOT EXISTS (
        SELECT 1
        FROM `thumbnails` U1
        WHERE U1.`status` IN (0, 2, 3) AND
        `videos`.`id_video` = U1.`id_video`
    )
LIMIT 5000;

关于mysql - 带有in子句的慢子查询,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35756825/

10-10 12:31