我們有一個包含幾百萬行的視頻表,我們只想選擇幾個類別和幾個標簽的視頻。
有沒有比這個查詢更優化的方法呢?
感謝您的幫助和反饋。
SELECT videos.id, videos.title FROM videos
WHERE videos.active = 1 AND videos.deleted IS NULL AND videos.segment = 1
AND (
videos.id IN(
SELECT videos.id FROM videos
INNER JOIN categories_videos on categories_videos.video_id = videos.id
INNER JOIN categories on categories.id = categories_videos.category_id AND categories.id = 59
WHERE videos.active = 1 AND videos.deleted IS NULL AND videos.segment = 1
)
OR videos.id IN(
SELECT videos.id FROM videos
INNER JOIN tags_videos on tags_videos.video_id = videos.id
INNER JOIN tags on tags.id = tags_videos.tag_id AND tags.id = 231014
WHERE videos.active = 1 AND videos.deleted IS NULL AND videos.segment = 1
)
)
uj5u.com熱心網友回復:
我只是將其表達為聯合查詢:
SELECT v.id, v.title
FROM videos v
INNER JOIN categories_videos cv ON cv.video_id = v.id
INNER JOIN categories c ON c.id = cv.category_id AND c.id = 59
WHERE v.active = 1 AND v.deleted IS NULL AND v.segment = 1
UNION ALL
SELECT v.id, v.title
FROM videos v
INNER JOIN tags_videos tv ON tv.video_id = v.id
INNER JOIN tags t ON t.id = tv.tag_id AND t.id = 231014
WHERE v.active = 1 AND v.deleted IS NULL AND v.segment = 1;
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/407533.html
標籤:
上一篇:MySQL查詢匯總
下一篇:MongoDB條件排序
