Zcela nový přístup. Vaše where
podmínka je na dvou tabulkách, ale to se zdá zbytečné.
První změna by byla:
where a1_.id = 1136 or a1_.parent_id = 1136
Myslím, že struktura, kterou chcete, je skenování tabulky kategorií a poté načtení z tabulky inzerátů. Chcete-li pomoci, můžete vytvořit index na advert(advert_category_id, created_date)
.
Byl bych v pokušení napsat dotaz přesunutím where
klauzule do poddotazu. Nevím, jestli to bude mít vliv na výkon:
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;