我的目標是選擇其中primary_category_id
(articles
表)或任何 次級類別(articles_secondary_categories
連接表)爲給定值的文章。在這個示例查詢中,類別1.我嘗試使用其他類型的連接,但是這裏需要注意的是文章可能沒有任何第二類別。優化MySQL LEFT JOIN查詢
SELECT DISTINCT articles.*
FROM articles
LEFT JOIN articles_secondary_categories AS categories
ON categories.article_id = articles.id
WHERE
(
primary_category_id = 1
OR
categories.category_id = 1
)
AND articles.state = "published"
AND edition_id = 1
ORDER BY publish_at DESC
LIMIT 10;
歡迎任何有關優化或替代的幫助。在具有4k articles
和7k articles_secondary_categories
(不是類別)的數據庫中,運行此查詢需要5秒鐘的時間。
什麼執行時間結果沒有WHERE(...)子句? – odiszapc
你的問題是你如何優化這個查詢運行在少於5秒? – daniellopez46
DISTINCT真的需要在這裏嗎? – raina77ow