mysql 对多表连接查询的结果进行gruop by导致的查询慢问题
先写sql语句如下:
SELECT
TB1.PRODUCT_CODE, TB1.COUNT,sum(TB2.PRODUCT_COUNT) as PC1, sum(TB4.PRODUCT_COUNT) as PC2
from
(SELECT PRODUCT_CODE, SUM(PRODUCT_COUNT) AS COUNT
from GYS_Warehouse_Detail
where GYS_ID = 6 and PRODUCT_COUNT > 0.0
GROUP BY PRODUCT_CODE
ORDER BY PRODUCT_CODE) TB1
LEFT JOIN Purchase_Order_Detail TB2 ON TB2.PRODUCT_CODE = TB1.PRODUCT_CODE
LEFT JOIN Purchase_Order_Lists TB3 ON TB3.ID = TB2.ORDER_ID
LEFT JOIN Order_Detail TB4 ON TB4.PRODUCT_CODE = TB1.PRODUCT_CODE
LEFT JOIN Order_Lists TB5 ON TB5.ID = TB4.ORDER_ID
WHERE TB3.STATUS < 5 AND TB5.STATUS < 3
GROUP BY TB1.PRODUCT_CODE
LIMIT 0,15
;
执行时间大约5秒多,explain的结果如图
考虑过加索引,加索引以后的explain结果显示行数优化了很多,但是执行时间变为20多秒。。。
感觉真正耗时间的是最后的gruop by,使用了using temporary和using filesort。
gruop by前的数据一共八万多条。
在gruop by的过程中是不是将八万条数据全部加载到内存形成临时表然后排序,,所以加了索引反而更慢,因为要加载到内存的数据变多了。。。各位大佬有什么办法吗?
回答
以上是 mysql 对多表连接查询的结果进行gruop by导致的查询慢问题 的全部内容, 来源链接: utcz.com/a/40697.html