2016-03-02 2 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; 
Смежные вопросы