Helt ny tilgang. Din where
tilstanden er på to borde, men det virker unødvendigt.
Den første ændring ville være:
where a1_.id = 1136 or a1_.parent_id = 1136
Jeg tror, at den struktur, du ønsker, er en scanning af kategoritabellen og derefter henter fra annoncetabellen. For at hjælpe kan du oprette et indeks på advert(advert_category_id, created_date)
.
Jeg ville være fristet til at skrive forespørgslen ved at flytte where
klausul ind i en underforespørgsel. Jeg ved ikke, om dette ville påvirke ydeevnen:
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;