如何使用多个连接加速mySql查询

时间:2016-08-07 05:43:12

标签: mysql sql join

我遇到了以下查询的性能问题,它可以正常处理小数据但是当大数据时它需要大约8到10秒。所以有人可以帮我吗?

SELECT DISTINCT flt.filter_id, fltd.name, fltd.description, fltd.seo,
flt.filter_group_id
FROM filter AS flt
LEFT JOIN filter_description AS fltd ON flt.filter_id = fltd.filter_id
LEFT JOIN product_filter AS pf ON flt.filter_id = pf.filter_id
LEFT JOIN product AS p ON p.product_id = pf.product_id
WHERE p.status =1 AND p.quantity >0 AND flt.filter_group_id IN (1, 2, 5, 8, 11 )
GROUP BY flt.filter_id
ORDER BY fltd.name ASC

我的数据库表大小: 产品:50000 product_filter:600000 过滤:5000 filter_description:5000

过滤器使用如下:

产品1 => (颜色:绿色)(尺寸:10,20)(面料:棉)

产品2 => (颜色:红色)(尺码:20,40)(面料:棉)

产品2 => (颜色:黄色)(尺寸:20)(面料:丝绸,棉)

我想要的结果如下:

颜色:绿色,红色,黄色

尺寸:10,20,40

面料:棉,丝绸

我认为这需要花费很多时间,因为它会针对每种产品一次又一次地搜索所有过滤器。

所以任何人都可以帮助我获得最快的结果吗?

filter_group_id,filter_id,product_id,状态和数量已编入索引

0 个答案:

没有答案