Ускорение Базы данных

Запрос вида:

# 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 ответ

  • 6

    Огромная вам благодарность за своевременную реакцию! Нагрузка снизилась даже больше чем было 2 обновления назад. Видимо провели хорошие работы по построению индексов к БД.

    Webasyst Support Team | Вчера 18:59
    Мы выпустили обновление Shop-Script, в котором устранили медленное выполнение запросов к базе данных после обновления до версии 10.0.
    Обновление можно установить в «Инсталлере». Проверьте, пожалуйста.
    Сообщите нам, если проблема сохранилась.
    Спасибо вам за то, что помогаете улучшать программные продукты Webasyst!
    —— С уважением, Михаил
    P. S.: Пожалуйста, не забудьте оценить этот ответ, для нас это важно.

    Еще раз огромное спасибо!

Добавить ответ

Чтобы добавить комментарий, зарегистрируйтесь или войдите