gpt4 book ai didi

mysql - 优化大表(75M+ 行)上的简单 mysql select

转载 作者:行者123 更新时间:2023-11-29 14:33:34 25 4
gpt4 key购买 nike

我有一个统计表,它以很大的速度增长(大约 25M 行/天),我想针对选择进行优化,该表适合内存,并且服务器有足够的备用内存(32G,表是4G)。

我的简单汇总查询是:

EXPLAIN select FROM_UNIXTIME(FLOOR(endtime/3600)*3600) as ts,sum(numevent1) as success , sum(numevent2) as failure from stats where endtime > UNIX_TIMESTAMP()-3600*96 group by ts order by ts;
+----+-------------+--------------+------+---------------+------+---------+------+----------+----------------------------------------------+
| id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
+----+-------------+--------------+------+---------------+------+---------+------+----------+----------------------------------------------+
| 1 | SIMPLE | stats | ALL | ts | NULL | NULL | NULL | 78238584 | Using where; Using temporary; Using filesort |
+----+-------------+--------------+------+---------------+------+---------+------+----------+----------------------------------------------+

Stats是一个innodb表,endtime上有一个正常的索引。我应该如何优化?

注意:我确实计划添加汇总表,但目前这就是我所坚持的问题,我想知道是否可以在不需要额外应用程序代码的情况下修复它。

最佳答案

我一直在进行本地测试。请尝试以下操作:

alter table stats add index (endtime, numevent1, numevent2);

并删除order by,因为它应该隐含在group by中(我猜解析器只是忽略了这个中的order by以防万一:)

关于mysql - 优化大表(75M+ 行)上的简单 mysql select,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9551766/

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