从mysql数据表中随机取出一条记录
2016-06-30 11:21
393 查看
核心查找数据表代码:
但这样取数据网上有人说效率非常差的,那么要如何改进呢
搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。
但是这样获得的是5条连续的记录。解决办法只能是每次查询一条,查询5次,但这个又不能满足我的要求了,我要一次找几条
高效写法
select * from 表名 order by rand( ) limit 1; //此处的1就是取出数据的条数
但这样取数据网上有人说效率非常差的,那么要如何改进呢
搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。
SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id ASC LIMIT 5;
但是这样获得的是5条连续的记录。解决办法只能是每次查询一条,查询5次,但这个又不能满足我的要求了,我要一次找几条
高效写法
SELECT * FROM user WHERE userId >= ((SELECT MAX(userId) FROM user )-(SELECT MIN(userId) FROM user )) * RAND() + (SELECT MIN(userId) FROM user ) LIMIT 5
相关文章推荐
- 设置mysql外部ip可以访问的命令
- 安装mysql中遇到的问题
- mysql 性能优化索引、缓存、分表、分布式实现方式。
- mysql select不使用任何锁(select with nolock)
- MySQL数据单个数据太大,导入不进去
- MySQL日期数据类型、时间类型使用总结
- Mysql表连接小结
- dbcp数据连接池配置
- MySQL内建函数
- 全面了解MySql中的事务
- 经过show variables like xxx 详解mysql运行时参数
- MySQL变量(参数)的查看和设置
- mysql报错及其解决方式集合
- MySQL如何利用索引优化ORDER BY排序语句
- mysql查询今天的数据
- mysql -- 索引总结
- mysql+hibernate 一些报错
- WITH RECURSIVE and MySQL
- MySQL的安装与配置
- mysql自动备份脚本