执行一条 Mysql 语句用了 40 分钟,好慢啊

2018-02-24 11:22:57 +08:00
 frozenway

mysql> SELECT count(*) AS tt,agent,ip,isp FROM sh_agent_log GROUP BY ip ORDER BY tt DESC LIMIT 20;

...

20 rows in set (40 min 27.17 sec)

想统计一下访问日记里面访问次数最多的 IP,没想到要查询这么久,一共有 30 万条数据而已,请问怎么优化查询

10775 次点击
所在节点    MySQL
56 条回复
sonyxperia
2018-02-24 11:23:57 +08:00
楼主的耐心可以的……
raccooncity
2018-02-24 11:25:47 +08:00
所以建索引了吗。。。
zhs227
2018-02-24 11:30:44 +08:00
不是应该直接 Ctrl+C 了吗。 耐心不错。explain 一下,看看是不是需要给 IP 字段加上索引。
BBCCBB
2018-02-24 11:39:10 +08:00
厉害厉害,可以可以,666
frozenway
2018-02-24 11:40:41 +08:00
@zhs227 explain 没提示要加索引
toxicant
2018-02-24 11:41:57 +08:00
index 是个好东西啊.........
LeeSeoung
2018-02-24 11:51:47 +08:00
- -你确定不检查下么,不应该这么慢的。。
owenliang
2018-02-24 11:54:38 +08:00
group by 本来就是全量计算,最后聚合后的桶数量决定了排序的耗时。

你机器估计很普通吧? 30 万对于生产服务器做统计也是小 case。
SourceMan
2018-02-24 12:00:49 +08:00
没有什么是加一台机器不能解决的,如果有,加两台!
frozenway
2018-02-24 12:05:28 +08:00
@owenliang 我的是在本地电脑执行的,win7,i5,8G 内存,2014 年买的

@toxicant 给 30 万数据加 index,会卡死的
murmur
2018-02-24 12:07:01 +08:00
40w 数据这个速度怕是在软盘上跑出来的吧
murmur
2018-02-24 12:07:38 +08:00
@frozenway 30w 这个数据行扫都不会这么卡,百万级数据索引照加不误,以现在 mysql 的性能优化够单表抗 1000w 都可以吧
Tink
2018-02-24 12:08:10 +08:00
索引
cisisustring
2018-02-24 12:17:21 +08:00
mysql> SELECT count(*) AS tt,agent,ip,isp FROM sh_agent_log GROUP BY ip ORDER BY tt DESC LIMIT 20;
我是分割线
只 gropu by ip 不会报错吗?
sagaxu
2018-02-24 12:21:10 +08:00
@frozenway 2000 万我也加下来了
HTNecro
2018-02-24 12:23:15 +08:00
没啥说的,索引
dobelee
2018-02-24 12:25:09 +08:00
40min 还没断开,楼主耐力惊人,佩服。
gbin
2018-02-24 12:32:57 +08:00
佩服
abusizhishen
2018-02-24 12:42:48 +08:00
建议 IP 转成整型存储,并加索引,以降低索引长度提高索引效率
abusizhishen
2018-02-24 13:00:03 +08:00
SELECT agent,ip,isp FROM sh_agent_log as a
inner join
(SELECT count(*) AS tt,id FROM sh_agent_log GROUP BY ip ORDER BY tt DESC LIMIT 20) as b
on a.id = b.id;

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/432153

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX