Привет!
Есть таблица товаров (item), таблица брендов (brand) и таблица соответствия товар=бренд (item_brand).
Товаров - 1.5 млн, брендов - 50 тыс.
Сервер: 2 ядра, 4Гб ОЗУ.
Для страницы "фильтра по брендам" делаю такой запрос (на всех полях участвующих в запросе проставил обычные индексы):
SELECT brand.*, count(*) FROM brand
JOIN item_brand ON item_brand.id_brand = brand.id
JOIN item ON item.id = item_brand.id_item
AND item.enabled=1
AND item.id_category IN (21,317,318)
GROUP BY brand.id
ORDER BY count(*) DESC
Один только этот запрос отрабатывает порядка 4-9 секунд. А подобных фильтров на странице еще 5-6. Страница грузится неимоверно долго первый раз (следующие обновления страницы мгновенны из-за кеширования).
Explain:
Подозреваю что или запросы не правильно строю, или индексы не отрабатывают.
Подскажите, в какую сторону копать?
Вот так фильтр выглядит:
Спасибо!