Оптимизация sql-запроса с подзапросами
Есть запрос, в котором участвуют несколько подзапросов с одной и той же таблицей, но разными where. Можно ли это как-то оптимизировать?
Дополнительная информация:
Структуру базы данных не могу менять
СУБД MySQL
SELECT cr.id as id, cp.brand, cp.model, cr.cat_number, ...,
(SELECT name FROM catalogue_property WHERE id=cr.width) as width,
(SELECT name FROM catalogue_property WHERE id=cr.height) as height,
(SELECT name FROM catalogue_groups_description WHERE cat_group_id=cr.group_id) as radius,
(SELECT wb_export FROM wi_exp WHERE items=cr.id) as wb_export
FROM catalogue_relationship cr
JOIN (catalogue_products cp,catalogue_groups cg,catalogue_groups_description gd)
ON (cp.item_id = cr.id AND cg.id = cr.group_id
AND gd.cat_group_id = cr.group_id)
WHERE cr.public=1
GROUP BY cr.id
ORDER BY cr.id ASC
Ответы (1 шт):
Автор решения: Aziz Umarov
→ Ссылка
Ответ зависит конечно от результата выборки.
Если у вас результат не большой, не не вижу смысла что либо менять. Запрос у вас и так не должен долго работать.
Если у вас результат большой, то можете соединить справочники на join. Соединить один раз справочник по индексированному ключу лучше нежели бегать каждый раз и находить конкретный.