2016-03-02 56 views
1

我有一個查詢來從數據庫中選擇視頻。在子句中緩慢子查詢

每個視頻都有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; 

回答

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;