Оптимизация 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

Ответ зависит конечно от результата выборки.

  1. Если у вас результат не большой, не не вижу смысла что либо менять. Запрос у вас и так не должен долго работать.

  2. Если у вас результат большой, то можете соединить справочники на join. Соединить один раз справочник по индексированному ключу лучше нежели бегать каждый раз и находить конкретный.

→ Ссылка