2019独角兽企业重金招聘Python工程师标准>>>

The easiest way to generate random rows in MySQL is to use the ORDER BY RAND() clause.

SELECT col1 FROM tbl ORDER BY RAND LIMIT 10;

This can work fine for small tables. However, for big table, it will have a serious performance problem as in order to generate the list of random rows, MySQL need to assign random number to each row and then sort them.
Even if you want only 10 random rows from a set of 100k rows, MySQL need to sort all the 100k rows and then, extract only 10 of them.

My solution for this problem, is to use RAND in the WHERE clause and not in the ORDER BY clause. First, you need to calculate the fragment of your desired result set rows number from the total rows in your table. Second, use this fragment in the WHERE clause and ask only for RAND numbers that smallest (or equal) from this fragment.

For example, suppose you have a table with 200K rows and you need only 100 random rows from the table. The fragment of the result set from the total rows is: 100 / 200k = 0.0005.
The query will look like:

SELECT col1 FROM tbl WHERE RAND()<=0.0005;

In order to get exactly 100 row in the result set, we can increase the fragment number a bit and limit the query:
For example:

SELECT col1 FROM tbl WHERE RAND()<=0.0006 limit 100;

转载于:https://my.oschina.net/victorli/blog/13364

如何在MySQL随机选择记录相关推荐

  1. mysql 随机选择数据_从MySQL随机选取数据

    从MySQL随机选取数据最简单的办法就是使用"ORDER BY RAND()"; 方案一: SELECT * FROM `table` ORDER BY RAND() LIMIT  ...

  2. mysql随机选择记录表_Mysql表中取随机记录

    RAND()是Mysql中的取随机数函数,该函数返回一个float型数值v,v的值为0 例如: mysql> SELECT RAND(); -> 0.9233482386203 mysql ...

  3. mysql随机显示记录_mysql随机提取记录数的方法

    通常情况下我们使用如下的语句随机返回一条记录数 SELECT * FROM tb_dic_class ORDER BY RAND() LIMIT 1,测试发现这个方法并不是最优化的,下面列举了一个效率 ...

  4. 数据库入门教程:如何在 MySQL 中选择除了某一列以外的所有列?

    点击下载Navicat for MySQL SQL通过SELECT *(SELECT ALL)子句使选择表中的所有字段变得非常简单. 不幸的是,一旦您从列表中省略一列,SELECT ALL语句就会消失 ...

  5. mysql随机显示记录_MySQL随机读取表中记录

    order by rand()来实现 select * from table order by rand(); 内存临时表 order by rand() 是一般通过内存临时表排序,可以通过执行计划e ...

  6. php mysql随机记录,php – 从MySQL中选择可变数量的随机记录

    我想从数据库中显示一条随机记录.如果我选择,我希望能够显示X个随机记录.因此,我需要从随机选择的ID列表中选择前X个记录 (除非地球尺寸急剧增加,否则将不会有超过500条记录可供选择.目前有66种可能 ...

  7. python实现随机抽取答题_如何在python中实现随机选择

    这篇文章主要介绍了如何在python中实现随机选择,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 想从一个序列中随机抽取若干元素,或者想生成几个随机 ...

  8. MySQL数据库中如何使用rand随机查询记录

    以下的文章主要介绍的是MySQL使用rand 随机查询记录效率测试,我们大家一直都以为MySQL数据库随机查询的几条数据,就用以下的东东,其实其实际效率是十分低的,以下就是文章的主要内容. 1.SEL ...

  9. mysql随机查询多条记录表_MySQL 随机查询表中N条记录

    mysql 随机查询N条记录 method 1 : SELECT * FROM tablename ORDER BY RAND() LIMIT N; method 2 : SELECT * FROM ...

最新文章

  1. 《Python语言程序设计》——2.10 增强型赋值运算符
  2. LTE voice centric和data centric
  3. 两行 CSS 代码实现图片任意颜色赋色技术
  4. mysql 静态表 是不是 myisam_mysql的静态表和动态表的区别,MyISAM和InnoDB的区别
  5. ubuntu 安装PCL
  6. python md5函数_python实现md5加密
  7. URL访问 和命名规范
  8. 扫描仪twain驱动是什么_建湖扫描仪卡纸一般多少钱
  9. HTTP/2中的二进制分帧
  10. canopen和1939区别_现场总线SAE J1939 与CANopen 通讯
  11. 动感标题文字快闪(闪白特效)开场PR模板MOGRT
  12. 关于ccs软件的简单使用
  13. 消息称微软Windows暂停接受华为新订单;2019 Q1 亚太区公有云IaaS、PaaS服务收入排名现已揭晓……...
  14. Git廖雪峰 常用命令总结
  15. HTML网页设计制作大作业-制作漫画网页设计6个页面(HTML+CSS+JavaScript)
  16. Codeforces Round #570 (Div. 3)B. Equalize Prices
  17. 英国政府资助!Wave Photonics领导光量子集成电路封装项目
  18. Python基本手册
  19. 性能测试之tcpcopy引流工具介绍
  20. java图片增加马赛克

热门文章

  1. 输出斐波那契数列不大于1000的序列
  2. 为什么python的命名不能以数字开头,Python模块名称以数字开头
  3. 【css】适配iphoneX
  4. PHP7 网络编程(四)signal信号【待】
  5. 并行程序设计模式--Master-Worker模式
  6. OC 观察者模式(通知中心,KVO)
  7. 黄学长模拟day1 球的序列
  8. Mac 上开启一个简单的服务器
  9. 整理90部好看的经典喜剧片
  10. 使用Maven搭建Struts2框架的开发环境