まったく新しいアプローチ。あなたのwhere
条件は2つのテーブルにありますが、それは不要のようです。
最初の変更は次のようになります:
where a1_.id = 1136 or a1_.parent_id = 1136
必要な構造は、カテゴリテーブルをスキャンして、広告テーブルからフェッチすることだと思います。これを支援するために、advert(advert_category_id, created_date)
にインデックスを作成できます。 。
where
を移動してクエリを記述したくなるでしょう。 サブクエリへの句。これがパフォーマンスに影響するかどうかはわかりません:
SELECT a0_.id AS id0
FROM advert a0_ INNER JOIN
(select ac.*
from advertcategory ac
where ac.id = 1136 or ac.parent_id = 1136
) ac
ON a0_.advert_category_id = ac.id
ORDER BY a0_.created_date DESC
LIMIT 15;