在一張表里
想要得到各IP對應(yīng)最大ID的一條記錄 就相當(dāng)于是得到每個人的最新發(fā)言之類的
按IP分組 找出對應(yīng)的最大IP
聽網(wǎng)友說我這個是因為MySQL的版本太低才需要寫的這么復(fù)雜澜共,
其他稍微高一點的版本 SELECT * FROM auto_user GROUP BY ip ORDER BY id DESC ; 即可(我沒試過)
這個表
第一種方式 子查詢 先排序 然后分組 (會比第二種慢)
image.png
沒有使用到索引,使用了臨時表瘦黑,出現(xiàn)Using filesort
Using filesort 是Mysql里一種速度比較慢的外部排序
第二種 熱心網(wǎng)友告訴我的寫法
image.png
使用了索引匹摇,但是需要的數(shù)據(jù)都在索引列中能找到甲葬,所以不需要回表查詢數(shù)據(jù)
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); -- 該表添加了聯(lián)合索引 id為主鍵