holem
Новичок
Оптимизация/разбиение сложного sql-запроса
Здравствуйте, уважаемые!
Есть sql-запрос:
SELECT ... FROM `shop_items` , `shop_ext_attributes_values` AS av1, `shop_ext_attributes_values` AS av2
WHERE
`shop_items`.`node_id` = '1'
AND `shop_items`.`id` = av1.`item_id`
AND `shop_items`.`id` = av2.`item_id`
AND `av1`.`attr_id` = '23'
AND `av1`.`var_id` = '31'
AND `av2`.`attr_id` = '2'
AND `av2`.`var_id` = '152'
LIMIT 0 , 20
Запрос делает выборку позиций товара из основной таблицы shop_items:
id | node_id | ... (параметры позиции)
делая сортировку по таблице shop_ext_attributes_values, которая содержит дополнительные параметры позиций:
id | attr_id (id доп параметра) | var_id (выбранный вариант-значение атрибута, доступного для этого доп. параметра)
Так вот этот запрос делает сортировку не по одному доп. параметру, а по двум сразу (av1 и av2).
По одному параметру всё делается достаточно быстро, а по двум просто ужас.. ну оочень медленно.. примерно за 7-10 сек.. Очень нужно его оптимизировать. Если у кого есть какие идеи, прошу высказываеться.
Заранее большое спасибо за любую помощь.
Здравствуйте, уважаемые!
Есть sql-запрос:
SELECT ... FROM `shop_items` , `shop_ext_attributes_values` AS av1, `shop_ext_attributes_values` AS av2
WHERE
`shop_items`.`node_id` = '1'
AND `shop_items`.`id` = av1.`item_id`
AND `shop_items`.`id` = av2.`item_id`
AND `av1`.`attr_id` = '23'
AND `av1`.`var_id` = '31'
AND `av2`.`attr_id` = '2'
AND `av2`.`var_id` = '152'
LIMIT 0 , 20
Запрос делает выборку позиций товара из основной таблицы shop_items:
id | node_id | ... (параметры позиции)
делая сортировку по таблице shop_ext_attributes_values, которая содержит дополнительные параметры позиций:
id | attr_id (id доп параметра) | var_id (выбранный вариант-значение атрибута, доступного для этого доп. параметра)
Так вот этот запрос делает сортировку не по одному доп. параметру, а по двум сразу (av1 и av2).
По одному параметру всё делается достаточно быстро, а по двум просто ужас.. ну оочень медленно.. примерно за 7-10 сек.. Очень нужно его оптимизировать. Если у кого есть какие идеи, прошу высказываеться.
Заранее большое спасибо за любую помощь.