Оптимизация запроса c кучей join-ов, Mysql

240
08 марта 2018, 09:10

У меня супер кул расчудесный запрос )

Помогите пожалуйста оптимизировать. Схемы таблиц не смогу привести. Но надеюсь на глаз кто может разобраться.

    SELECT p.id AS id, p.id_1c AS id_1c, pfvComb.catId AS category, s.frame_id AS frame, s.color_id AS color, pfvComb.gender AS genderCode, pfvComb.wheel AS wheel, pp.name AS picture
FROM products AS p
  LEFT JOIN (
              SELECT pfv.product_id, pfv.feature_code AS categoryCode, pfv.value_integer AS catId, pfv_g.value_integer AS gender, pfv_w.value_integer AS wheel
              FROM products_features_values AS pfv
                LEFT JOIN products_features_values AS pfv_g
                  ON pfv.product_id = pfv_g.product_id AND pfv_g.feature_code = 'gender'
                LEFT JOIN products_features_values AS pfv_w
                  ON pfv.product_id = pfv_w.product_id AND pfv_w.feature_code = 'wheel'
              WHERE pfv.feature_code IS NOT NULL AND pfv.feature_code = 'category' AND pfv.value_integer = 10
            ) AS pfvComb ON p.id = pfvComb.product_id
  LEFT JOIN sku AS s ON p.id = s.product_id
  LEFT JOIN products_pictures AS pp ON p.id = pp.product_id
WHERE p.is_visible = 1 AND p.is_valid = 1
ORDER BY p.popularity DESC

Такой запрос выполняется, но тяжело. Как его можно оптимизировать?

READ ALSO
Выборка только с определенными связями

Выборка только с определенными связями

Данный вариант не подходит потому что будут выбирать все записи в которых есть связи с id 3 или 4 или 5А нужно выбирать запись только если есть...

260
CGI-программа на С#

CGI-программа на С#

Извиняюсь за неразборчивость, так как столкнулся с этим впервые и мало что в этом понимаю

269
Изменение запроса, equals и is null

Изменение запроса, equals и is null

Доброго времени суток! Мне необходимо получить записи не только с родителями, но и без, для которых ParentTitle будет равен nullКаким образом изменить...

280
yield MemoryLeaks

yield MemoryLeaks

Решил я попробовать использовать yield в своем проекте и столкнулся с проблемой утечки памяти

250