Mysql查询优化

本文讨论了如何高效地从游戏用户登录记录中筛选出连续三天未登录的流失用户,通过比较两种不同的SQL查询方法,展示了优化后的查询如何显著提高性能。详细介绍了SQL查询的实现方式和性能对比,旨在帮助开发者提升数据处理效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

项目需要查询游戏用户的流失用户,对于流失用户的定义为:当天登陆,之后三天未登录的用户视为流失用户,目前有数据表 login_info 分别存储了用户id,登陆时间(int 11)。
最简单的实现方式:SELECT DISTINCT uid from login_info WHERE login_time between $time1['begin'] AND $time1['end']
and uid not in (select DISTINCT uid from login_info where login_time between $time2['begin'] and $time2['end']) 其中的$time1 存储为一天的时间起止 $time2存储为流失的时间范围(这里是三天),但是实际当中查询速度相当慢。
群里找了个高手,给出了另外一种解决办法,最终sql如下:

select uid from (select uid,MAX(login_time) as max,MIN(login_time) as min FROM login_info where login_time between 1361721600 and 1362067199 GROUP BY uid ) as A
where max between 1361721600 AND 1361807999

查询时间大大缩短,不得不佩服高手啊!!!具体就不做解释了
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值