2018-11-08 各IP对应最大ID的一条记录 就相当于是得

2018-11-08  本文已影响0人  土豆丝炒洋芋丝

在一张表里
想要得到 各IP对应最大ID的一条记录 就相当于是得到每个人的最新发言之类的

按IP分组 找出对应的最大IP
听网友说我这个是因为MySQL的版本太低才需要写的这么复杂,
其他稍微高一点的版本 SELECT * FROM auto_user GROUP BY ip ORDER BY id DESC ; 即可(我没试过)

这个表

第一种方式 子查询 先排序 然后分组 (会比第二种慢)

image.png
没有使用到索引,使用了临时表,出现Using filesort
Using filesort 是Mysql里一种速度比较慢的外部排序

第二种 热心网友告诉我的写法

image.png
使用了索引,但是需要的数据都在索引列中能找到,所以不需要回表查询数据
https://blog.csdn.net/h106140873/article/details/80999990

速度


速度 emmm 本地试了好几次都是一样的速度,或许有参考价值
SELECT * FROM auto_user ;
SELECT * FROM (SELECT * FROM auto_user ORDER BY id DESC) AS a GROUP BY ip;
SELECT * FROM auto_user a WHERE not exists (SELECT 1 FROM auto_user b WHERE a.ip=b.ip AND a.id<b.id);
alter table auto_user add index room_ip_id(ip,id);  -- 该表添加了联合索引 id为主键





上一篇 下一篇

猜你喜欢

热点阅读