MySQL-求一个数据统计高效sql语句
充值订单部分表结构:
order_id、user_id、create_time、pid、prid
其中order_id是唯一索引
我想获取同一用户(user_id)最近充值前5个pid和prid,这个sql如何写呀?还有由于这个表数据量很大,所以sql要尽量效率高些。
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
单独sql统计没想到很高效的方法,只能联表查询:
SELECT A.pid FROM 充值表 A
WHERE
order_id = (SELECT max( order_id ) FROM 充值表 WHERE user_id = '".$user_id."' AND pid = A.pid )
ORDER BY A.create_time DESC LIMIT 5
SELECT A.prid FROM 充值表 A
WHERE
order_id = (SELECT max( order_id ) FROM 充值表 WHERE user_id = '".$user_id."' AND prid = A.prid )
ORDER BY A.create_time DESC LIMIT 5
SQL语句本身可能优化的空间有限,可以写为:
select pid, prid from table_name where user_id=XXX limit 5;
其中,如果不是按照时间排序,还有必要考虑where中增加create_time。这里没写(为了减少不必要的查询条件)。
至于执行效率,可以从其他方面着手,比如服务器性能,比如数据库建立索引等等。
试试这样:
SELECT DISTINCT pid,prid FROM tablename WHERE user_id = xx limit 5
然后对user_id 加个索引,我想速度应该还可以!!