我遇到了以下查询的性能问题,它可以正常处理小数据但是当大数据时它需要大约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,状态和数量已编入索引