2018-11-08 各IP对应最大ID的一条记录 就相当于是得到每个人的最新发言之类的

在一张表里
想要得到 各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

你可能感兴趣的:(2018-11-08 各IP对应最大ID的一条记录 就相当于是得到每个人的最新发言之类的)