Helt nytt tillvägagångssätt. Din where
skicket är på två bord, men det verkar onödigt.
Den första ändringen skulle vara:
where a1_.id = 1136 or a1_.parent_id = 1136
Jag tror att strukturen du vill ha är en skanning av kategoritabellen och sedan hämtar från annonstabellen. Som hjälp kan du skapa ett index på advert(advert_category_id, created_date)
.
Jag skulle bli frestad att skriva frågan genom att flytta where
klausul till en underfråga. Jag vet inte om detta skulle påverka prestandan:
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;