Изцяло нов подход. Вашето where
условието е на две таблици, но това изглежда ненужно.
Първата промяна ще бъде:
where a1_.id = 1136 or a1_.parent_id = 1136
Мисля, че структурата, която искате, е сканиране на таблицата с категории и след това извличане от таблицата с реклами. За да помогнете, можете да създадете индекс на advert(advert_category_id, created_date)
.
Бих се изкушил да напиша заявката, като преместя where
клауза в подзаявка. Не знам дали това ще повлияе на производителността:
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;