Geheel nieuwe aanpak. Je where
voorwaarde is op twee tafels, maar dat lijkt niet nodig.
De eerste verandering zou zijn:
where a1_.id = 1136 or a1_.parent_id = 1136
Ik denk dat de gewenste structuur een scan is op de categorietabel en vervolgens wordt opgehaald uit de advertentietabel. Om u te helpen, kunt u een index maken op advert(advert_category_id, created_date)
.
Ik zou in de verleiding komen om de query te schrijven door de where
. te verplaatsen clausule in een subquery. Ik weet niet of dit de prestaties zou beïnvloeden:
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;