我的目标是选择primary_category_id
(articles
表)或任何次要类别(articles_secondary_categories
连接表)是给定值的文章。在此示例查询中,类别 1。我尝试使用其他类型的连接,但这里需要注意的是,一篇文章可能没有任何二级类别。
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;
欢迎任何帮助优化此或替代方案。在具有 4karticles
和 7k articles_secondary_categories
(不是类别)的数据库中,运行此查询需要 5 秒。