带有子句的慢子查询

时间:2016-03-02 19:53:39

标签: mysql

我有一个查询来从数据库中选择视频。

每个视频都有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;

1 个答案:

答案 0 :(得分:2)

试一试:

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;