使用Doctrine缓慢的MySQL查询

时间:2019-07-05 08:18:50

标签: php mysql doctrine

要过滤属于所选过滤器的产品,我在下面编写了此查询。当我在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

0 个答案:

没有答案