高效SQL 查询相同userID中日期最大的记录

查询表中数据条数

mysql> select count(*) from point;
+----------+
| count(*) |
+----------+
|   163134 |
+----------+

1.查找表中相同userID最大日期,再利用最大日期去查找这条记录

 mysql> select t.userid, t.point from point t where addtime = (select max(addtime) from point tmp where t.userid = tmp.userid) and userid ='fff024306a104';
+---------------+---------+
| userid        | point   |
+---------------+---------+
| fff024306a104 | 3117.50 |
+---------------+---------+
1 row in set (5.94 sec)

2.用userID分组取最大日期生产临时表,再和原表做INNER JOIN

 mysql> select t.userid, t.point from point t inner join (select max(addtime) addtime from point group by userid) tmp on t.addtime = tmp.addtime and t.userid ='fff024306a104';
+---------------+---------+
| userid        | point   |
+---------------+---------+
| fff024306a104 | 3117.50 |
+---------------+---------+
1 row in set (0.42 sec)

查询时间第一种是第二种方法的10倍还多

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值