私の目標は、primary_category_id
(articles
テーブル)または任意のセカンダリカテゴリ(articles_secondary_categories
結合テーブル)が指定された値である記事を選択することです。このクエリ例では、カテゴリ1です。他の種類の結合を使用してみましたが、ここでの注意点は、記事に2次カテゴリがない可能性があることです。
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
(カテゴリではない)のDBでは、このクエリの実行に5秒かかります。