gpt4 book ai didi

mysql - MySQL 中使用 group by 查询 SQL 运行缓慢

转载 作者:行者123 更新时间:2023-11-29 22:07:35 24 4
gpt4 key购买 nike

我下面有一个sql,它运行了大约30分钟,这对我来说太长了。

SELECT LPP.learning_project_pupilID, SL.serviceID, MAX(LPPO.start_date), SUM(LPPOT.license_mode_value) totalAssignedLicenses
FROM t_services_licenses SL
INNER JOIN t_pupils_offers_services POS ON POS.service_licenseID = SL.service_licenseID
INNER JOIN j_learning_projects_pupils_offers LPPO ON LPPO.learning_project_pupil_offerID = POS.learning_project_pupil_offerID
INNER JOIN j_learning_projects_pupils LPP ON LPPO.learning_project_pupilID = LPP.learning_project_pupilID
INNER JOIN j_learning_projects_pupils_offers_tracking LPPOT ON LPPOT.pupil_offer_serviceID = POS.pupil_offer_serviceID
INNER JOIN t_filters_items FI ON FI.itemID = LPP.learning_project_pupilID_for_filter_join
WHERE FI.filterID = '4dce2235-aafd-4ba2-b248-c137ad6ce8ca'
AND SL.serviceID IN ('OnlineConversationClasses', 'TwentyFourSeven')
GROUP BY LPP.learning_project_pupilID, SL.serviceID

结果解释如下(如果看不到图片请告诉我):

http://images0.cnblogs.com/blog2015/47012/201508/140920298959608.png

我查看了配置文件结果,“复制临时数据”几乎一直浪费时间。我知道原因是由“group by”功能引起的,所以我做了以下一些更改来验证它:我删除了 MAX、SUM 函数以及 Group By sql 并运行它,时间只花费了大约 40 秒,这对我们来说还可以。所以在这里,我想知道是否还有其他方法可以使上述sql执行得更快?

更多信息,您可以在这里找到:http://www.cnblogs.com/scy251147/p/4728995.html

编辑:从解释 View 中,我可以看到在 t_filters_items 表中,大约有 50802 行被过滤,而且这个表并不幸运地使用临时来存储临时数据,这对我来说不是一个好的选择。我真的不太喜欢MySQL中的“Group By”。

最佳答案

请勿在 UUID 列上使用 CHARACTER SET utf8。更改为ascii。 uuid 的进一步讨论以及如何进一步缩小它们:http://mysql.rjweb.org/doc.php/uuid

FI.filterID = '4dce2235-aafd-4ba2-b248-c137ad6ce8ca' 是否真的有 50K 行

GROUP BY 跨越两个表(LPPSL),因此无法优化。可以改变吗?

SUM(...) 的值可能比您预期的要大。这是因为JOIN。尝试在子查询中重写 SUM 的计算。

你使用的是InnoDB吗? innodb_buffer_pool_size 是否设置为可用 RAM 的 70% 左右?

每个表大约有多少行?

关于mysql - MySQL 中使用 group by 查询 SQL 运行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32001119/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com