
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 万条数据而已,请问怎么优化查询
1 sonyxperia 2018 年 2 月 24 日 楼主的耐心可以的…… |
2 raccooncity 2018 年 2 月 24 日 via iPhone 所以建索引了吗。。。 |
3 zhs227 2018 年 2 月 24 日 不是应该直接 Ctrl+C 了吗。 耐心不错。explain 一下,看看是不是需要给 IP 字段加上索引。 |
4 BBCCBB 2018 年 2 月 24 日 厉害厉害,可以可以,666 |
6 toxicant 2018 年 2 月 24 日 index 是个好东西啊......... |
7 LeeSeoung 2018 年 2 月 24 日 - -你确定不检查下么,不应该这么慢的。。 |
8 owenliang 2018 年 2 月 24 日 group by 本来就是全量计算,最后聚合后的桶数量决定了排序的耗时。 你机器估计很普通吧? 30 万对于生产服务器做统计也是小 case。 |
9 SourceMan 2018 年 2 月 24 日 没有什么是加一台机器不能解决的,如果有,加两台! |
10 frozenway OP |
11 murmur 2018 年 2 月 24 日 40w 数据这个速度怕是在软盘上跑出来的吧 |
13 Tink PRO 索引 |
14 cisisustring 2018 年 2 月 24 日 mysql> SELECT count(*) AS tt,agent,ip,isp FROM sh_agent_log GROUP BY ip ORDER BY tt DESC LIMIT 20; 我是分割线 只 gropu by ip 不会报错吗? |
16 HTNecro 2018 年 2 月 24 日 没啥说的,索引 |
17 dobelee 2018 年 2 月 24 日 40min 还没断开,楼主耐力惊人,佩服。 |
18 gbin 2018 年 2 月 24 日 via Android 佩服 |
19 abusizhishen 2018 年 2 月 24 日 via Android 建议 IP 转成整型存储,并加索引,以降低索引长度提高索引效率 |
20 abusizhishen 2018 年 2 月 24 日 via Android |
21 abusizhishen 2018 年 2 月 24 日 via Android 事实上年的 |
22 abusizhishen 2018 年 2 月 24 日 via Android 打错了,试试上面的 |
23 lygmqkl 2018 年 2 月 24 日 mysql 金句 用小结果驱动大结果。 当然索引之类的 都要做到位,其实在业务逻辑层面上可以 规避这些风险的。 |
24 liuxu 2018 年 2 月 24 日 看上去直接原因还是临时磁盘表用的太多,io 跟不上,换 SSD 会好些。但正确的姿势还是应该加索引了。。 |
25 alcarl 2018 年 2 月 24 日 via Android @cisisustring 不会,mysql 5.7 以下默认没有开这个检查 |
26 alcarl 2018 年 2 月 24 日 via Android 默认配置的话,可能是 sort 的 buff 有点小,innodb 的 buf 也有点小,都有影响,调大一点会好一些 |
27 laqow 2018 年 2 月 24 日 via Android tt 和 ip 的类型改一下,改成定长字符串或整型,或算一列 hash 再建索引,应该不会慢 |
28 ty89 2018 年 2 月 24 日 建议楼主顺便把 create table sh_agent_log 的结果贴一下 |
29 justfindu 2018 年 2 月 24 日 不加索引也不应该这么慢啊 才 30W |
30 picasso250 2018 年 2 月 24 日 如果 sh_agent_log 这个的数据还会不断增长,那么建议你用 redis 存 ip 记录吧. 这个需要单独处理. 如果 sh_agent_log 不再增长,你就是单独拿出来分析一下. 换个 SSD 吧. |
31 woscaizi 2018 年 2 月 24 日 via iPhone 看看类似 select * from table limit 0,20 的时间如何,然后再慢慢加 group by,看看哪个条件会导致慢。 另外,磁盘 io 怎么样,是 ssd 还是 hdd ? |
32 rrfeng 2018 年 2 月 24 日 30w …… 给我个文本文件我用 awk 1s 内给你跑出来 |
33 yaoweilei 2018 年 2 月 24 日 30 万条,应该 40ms 内查出来哈,40 分钟实在是敬佩楼主的耐心。 |
34 chcx 2018 年 2 月 24 日 佩服耐心。 index. |
35 frozenway OP @abusizhishen 你这个语句执行报错了 |
36 hanqi7012 2018 年 2 月 24 日 via Android 40 分钟三十万有点慢啊 那天下的库 4 亿也没这么慢啊 |
37 frozenway OP 加了索引,然而还是很慢 |
39 SoulSleep 2018 年 2 月 24 日 via iPhone 贴 explain 你发 sql 我只能吐槽 排序 group limit......能不慢吗…… 40min ?那就太多了 |
40 shyy06 2018 年 2 月 24 日 Mysql 从删库到跑路 |
41 GeekCat 2018 年 2 月 24 日 30 万数据 40min....敢问硬盘 rpm 几百? |
42 abusizhishen 2018 年 2 月 24 日 via Android @frozenway 我手机上发的,错误贴出来 |