Ускорение Базы данных
Запрос вида:
# Query_time: 5.083389 Lock_time: 0.000330 Rows_sent: 17 Rows_examined: 17058115
SELECT p.*,p.id,(p.count > 0 || p.count IS NULL) AS in_stock,GROUP_CONCAT(DISTINCT ps1.id) AS sku_ids FROM shop_product p JOIN shop_product_skus ps1 ON ps1.product_id = p.id JOIN shop_product_features pf1 ON (pf1.product_id = p.id OR pf1.sku_id = ps1.id) JOIN shop_product_features pf2 ON (pf2.product_id = p.id OR pf2.sku_id = ps1.id) JOIN shop_category_products cp1 ON p.id = cp1.product_id WHERE ps1.available > 0 AND ps1.status AND pf1.feature_id = 1 AND pf1.feature_value_id IN (13) AND pf2.feature_id = 2 AND pf2.feature_value_id IN (23) AND p.status = 1 AND cp1.category_id = 43 GROUP BY cp1.sort, p.id ORDER BY in_stock DESC,cp1.sort ASC, p.id LIMIT 400,20;
Я добавил индексы
shop_product_features
обозначенные зелеными стрелками и запрос ускорился в 10 раз.

Но вопрос в другом, а зачем базовые индексы обозначенные красными стрелками, и какого вида запросы они ускоряют?
П.с. для всех, проверяйте запросы естественно Select SQL_NO_CACHE - чтобы потом сравнить результаты выборок!
1 ответ
Огромная вам благодарность за своевременную реакцию! Нагрузка снизилась даже больше чем было 2 обновления назад. Видимо провели хорошие работы по построению индексов к БД.
Еще раз огромное спасибо!