**结束。**此问题需要详细的调试信息。它目前不接受答案。
**想改进这个问题吗?**更新问题,使其成为堆栈溢出的主题。
两年前关门了。
改进这个问题
我正在尝试优化一个用于电子商务定制商店的mysql查询,该查询有一些内部连接和分组方式,这使得查询速度非常慢,我们正在使用它为类别、供应商、颜色等生成动态过滤器/组合。
有人知道如何优化它吗?首先,我无法使products(p)表使用多索引而不是主键,查询大约需要150-200毫秒。
确切的查询:
SELECT DISTINCT(sl.id_supplier),
count(DISTINCT p.id_product) as product_count,
sl.supplier_name,
sl.supplier_slug,
sl.supplier_link
FROM supplier s
INNER JOIN supplier_lang sl
on s.id_supplier = sl.id_supplier
AND sl.id_project = 6
AND sl.id_lang =2
AND s.id_project = 6
AND s.active = 1
INNER JOIN product p
ON p.id_project = 6
and p.active = 1
AND p.id_supplier = sl.id_supplier
INNER JOIN product_category pc
on pc.id_project = 6
and pc.id_category = 6
and p.id_product = pc.id_product
GROUP by sl.id_supplier
ORDER BY sl.supplier_name ASC
谢谢您
https://snag.gy/f6dy4r.jpg
1条答案
按热度按时间iswrvxsc1#
虽然上面提到了一个隐式的函数依赖关系,但我认为这样的查询看起来更像这样是一个很好的实践(通常也是预期的):
要获得优化此查询的帮助,我们需要查看所有相关表的showcreatetable语句以及上面的解释。这将是一个编辑您的问题的形式,不会包括任何图片。