gpt4 book ai didi

mysql - 加速sql查询获取月度数据

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

我正在获取每月统计数据的分析,但我的查询似乎很慢我对 mysql 不是很好,我不确定最好的方法是什么,也许这是正确的。在 StackOverflow 上搜索后,我发现我认为这是获取数据的最佳方式。

我需要在一个月内获取每天的统计数据/统计数据,我有一张表格用于一个月中的每一天,就像这样。

enter image description here

我正在像这样对我的统计表运行查询。

SELECT day, (SELECT COUNT(*) FROM stats WHERE DAYOFMONTH( stats.timestamp ) = DW.day_id AND MONTH( stats.timestamp ) = MONTH(CURDATE()) AND YEAR( stats.timestamp ) = YEAR(CURDATE()) AND stats.user_id = 1) AS taly FROM daysoffthemonth DW

这是该查询的输出。

enter image description here

这行得通,但如上所述,它开始变得非常慢,尤其是现在我的统计表开始填充大量数据。

是否希望获得有关最佳实践的任何建议?

谢谢

评论中建议的查询结果。

enter image description here

最佳答案

你应该避免子查询插入列结果..
尝试使用连接而不是子查询

 SELECT DW.day, ifnull(COUNT(*),0) taly
FROM daysoffthemonth DW
LEFT JOIN stats ON DAYOFMONTH( stats.timestamp ) = DW.day_id
AND AND MONTH( stats.timestamp ) = MONTH(CURDATE())
AND AND YEAR( stats.timestamp ) = YEAR(CURDATE())
AND stats.user_id = 1
GROUP BY DW.day

或避免 1

select DW.day, ifnull(t.my_count,0) taly
from daysoffthemonth DW
left join (
select DAYOFMONTH( stats.timestamp ) day , COUNT(*) my_count
from stats
where MONTH( stats.timestamp ) = MONTH(CURDATE())
AND YEAR( stats.timestamp )= YEAR(CURDATE())
group by DAYOFMONTH( stats.timestamp ) ) t on DW.day = t.day

关于mysql - 加速sql查询获取月度数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48962554/

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