Enfoque completamente nuevo. Tu where
la condición está en dos tablas, pero eso parece innecesario.
El primer cambio sería:
where a1_.id = 1136 or a1_.parent_id = 1136
Creo que la estructura que desea es un escaneo en la tabla de categorías y luego se obtiene de la tabla de anuncios. Para ayudar, puede crear un índice en advert(advert_category_id, created_date)
.
Estaría tentado a escribir la consulta moviendo el where
cláusula en una subconsulta. No sé si esto afectaría el rendimiento:
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;