MySQL key重复下按某字段排序
来源:互联网 发布:圈外网网络营销软件 编辑:程序博客网 时间:2024/06/08 16:41
有一个表(user_record),可能有百万条记录,大致内容如下:
no uid s================1 a 9992 b 8993 c 12344 a 13225 b 933-----------------
uid可以重复。现在要做的是按‘s’倒序(desc)排,找出前10个不重复的uid记录,结果中要包括uid和s。
麻烦一点的做法是分两步来做:
SELECT distinct(uid) FROM user_record ORDER BY s DESC LIMIT 10SELECT uid,s FROM user_record WHERE uid IN(Just Results)
如下是用一条语句来处理:
SELECT uid, MAX(s) max_sFROM user_recordGROUP BY uidORDER BY max_s DESCLIMIT 10
以上两个方法性能上差不多,一般我们会对uid做索引,所以速度还可以。但是如果这个表比较大的话,就会比较慢了。我试过,在有200万条记录的情况下大概需要7~8秒,300万条记录大概要10~11秒。还是要对整个表扫描的。
当然也有一个变通的方法,比如你确定这个s字段是相对独立的样本,我们可以取前100(或1000)条记录,再从中找出不重复的uid的记录
SELECT * FROM (SELECT uid,s FROM user_record ORDER BY s DESC LIMIT 100) as tbGROUP BY tb.uid ORDER BY tb.s DESCLIMIT 10这个就会很快了,不过不能确保前100条中有10个不重复的uid
- MySQL key重复下按某字段排序
- mysql删除重复字段
- mysql查询重复字段
- 字段排序 拼接key value
- MySQL 中通过使用UNIQUE KEY 来控制字段值不重复的问题.
- mysql查询删除重复字段
- Mysql中文字段排序
- mysql中文字段排序
- mysql特殊字段排序
- mysql中文字段排序
- mysql中记录某一字段中重复的个数并且按照次数排序
- mysql primary key对auto_increment字段影响
- MYSQL 全表按照Key字段更新指定的字段
- mysql删除某个字段重复的数据
- MYSQL删除某个字段多余重复记录
- distinct去掉mysql中重复字段值
- mysql不重复字段值求和
- mysql 删除单表内多个字段重复的数据
- VI编辑器
- Android开发
- socket客户端服务器通信(多线程)
- 电脑生产流水线工人(角色问题) 递归 逐步求精
- 2013腾讯编程马拉松初赛第0场(3月20日)HDU 4501
- MySQL key重复下按某字段排序
- FaceBook开发流程
- iOS开发资源汇集
- ubuntu 常见安装软件错误
- 安全知识 入侵咖啡屋Wifi内的蹭网iPhone
- loadrunner测试并发数
- “glibc detected”, free(), invalid pointer解决方法
- hdu1867
- MySql的可视化工具navicat连接配置