Помощь Нужно ли добавлять индексы в базу для ускорения работы магазина 1.4.11.1 версии?

lightman555

Гуру форума
Регистрация
7 Мар 2013
Сообщения
375
Реакции
65
Давно столкнулся с тем, что при использовании модуля (входящего в стандартную инсталяцию) многоуровневой навигации - довольно существенно тормозит выдача товара. Магазин растет и товаров становиться больше и все больше тормоза с этим модулем.
В частности вывод характеристик по определенному количеству ламп. Может открываться до 2-3-х минут притом создается впечатление что магазин подвис.
скриншот отбора по характеристикам:
Для просмотра ссылки Войди или Зарегистрируйся

повторно уже открывается все очень быстро, но ненадолго - примерно на час (точно не засекал) - потом все заново прогружать нужно.

Читал в интернете, что для подобных задач есть решение в виде создания индекса на определенные таблицы - это существенно может сократить время, но к сожалению по престе очень мало упоминаний на эту тему.
На одном форуме нашел, что как вараинт нужно создать вот такие индексы:
CREATE INDEX p_price ON ps_product (price);
CREATE INDEX p_reduction_price ON ps_product (reduction_price);
CREATE INDEX dr_time_end ON ps_date_range (time_end);
CREATE INDEX p_reduction_from ON ps_product (reduction_from);
CREATE INDEX p_reduction_to ON ps_product (reduction_to);
CREATE INDEX pt_name ON ps_page_type (name);

подскажите (у кого есть опыт) как просмотреть запросы которые идут от модуля многоуровневой навигации и на базе них ввести индексацию?
 
Кто-нибудь может подсказать что это за запрос и где его искать (таких запросов много)?


# Query_time: 3.902190 Lock_time: 0.000221 Rows_sent: 3 Rows_examined: 48604267


SET timestamp=1457546417;

SELECT id_product

FROM

(SELECT `id_product`, @curRow := @curRow + 1 AS row_number

FROM `ps_product` p

JOIN

(SELECT @curRow := 0) r

WHERE `id_category_default`=2 AND active=1) n

WHERE n.row_number>=

(SELECT (row_number-MOD(row_number-1,3))

FROM

(SELECT `id_product`, @curRow := @curRow + 1 AS row_number

FROM `ps_product` p

JOIN

(SELECT @curRow := 0) r

WHERE `id_category_default`=2 AND active=1) x

WHERE `id_product`=29350)

LIMIT 3;
 
Назад
Сверху