Медленный MySQL запрос с использованием Doctrine - PullRequest
0 голосов
/ 05 июля 2019

Чтобы отфильтровать товары, которые принадлежат к выбранным фильтрам, я написал этот запрос ниже. Когда я запускаю это в Mysql, это очень быстро. Но когда я пытаюсь выполнить этот запрос в Doctrine, он очень медленный. Удаление группы дает мне один результат, и это быстрее, но это должно быть 11 результатов.

Даже чем больше фильтров я добавлю к этому утверждению, тем медленнее оно будет.

Может кто-нибудь помочь мне с этой проблемой?

    SELECT DISTINCT p.id, p.brand_id, p.name, p.permalink, p.base_model, 
    p.ean, p.description, p.unit, p.price, p.offer_active, p.offer_price, 
    GROUP_CONCAT(DISTINCT m.url ORDER BY `m`.`order`, `p`.`id` SEPARATOR ",") AS url, pcm.category_id 
    FROM product p 
    LEFT JOIN product_category pc ON pc.product_id = p.id 
    LEFT JOIN media m ON p.id = m.product_id 
    INNER JOIN product_category pcm ON p.id = pcm.product_id AND pcm.main = 1 AND pcm.product_id IS NOT NULL 
    LEFT JOIN product_filter_value pfv1 ON p.id = pfv1.product_id 
    LEFT JOIN product_filter_value pfv2 ON p.id = pfv2.product_id 
    LEFT JOIN product_filter_value pfv3 ON p.id = pfv3.product_id 
    LEFT JOIN product_filter_value pfv4 ON p.id = pfv4.product_id 
    WHERE (pc.category_id = 23) 
    AND (p.active = 1) 
    AND (pfv1.filter_value_id IN (2)) 
    AND (pfv2.filter_value_id IN (8)) 
    AND (pfv3.filter_value_id IN (22)) 
    AND (pfv4.filter_value_id IN (38)) 
    GROUP BY 1
    ORDER BY p.top desc
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...