摘要 腾兴网为您分享:mysql随机取数据的几种方法,周公解梦,小t智联,图乐,千题库等软件知识,以及2018酷狗音乐vip,集装箱之家,兄弟3150驱动,听书,熊猫办公,四年级上册语文书,winmail邮件服务器,闪之轨迹3dm,小猪佩奇涂色,同筹网,本色,td1,长春市图书馆,世纪开元,工商管理自我鉴定等软件it资讯,欢迎关注腾兴网。mysql随机选取数据的最常用的就是:ORDER BY RAND()。 方法1: SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1; 此方法会比较慢,在于mysql会创建一张零时表来保存所有的结果集,然后给每个结果一个...

mysql随机选取数据的最常用的就是:ORDER BY RAND()。

方法1:

SELECT * FROM `table` ORDER BY RAND() LIMIT 0,1;

此方法会比较慢,在于mysql会创建一张零时表来保存所有的结果集,然后给每个结果一个随机索引,然后再排序并返回。

有方法可以让执行速度更快,基本思想就是先获取一个随机数,然后使用这个随机数来获取指定的行。

由于所有的行都有一个唯一的id,我们将只取最小和最大id之间的随机数,然后获取id为这个数行。为了让这个方法当id不连续时也能有效,我们在最终的查询里使用”>=”代替”=”。

为了获取整张表的最小和最大id,我们使用MAX()和MIN()两个聚合函数。这两个方法会返回指定组里的最大和最小值。在这里这个组就是我们表里的所有id字段值。

方法2:

$range_result = mysql_query( " SELECT MAX(`id`) AS max_id , MIN(`id`) AS min_id FROM `table` ");$range_row = mysql_fetch_object( $range_result );$random = mt_rand( $range_row->min_id , $range_row->max_id );$result = mysql_query( " SELECT * FROM `table` WHERE `id` >= $random LIMIT 0,1 ");

这个方法会用唯一的id值限制表的每一行。

那么,如果不是这样情况怎么办?

以下的方法使用了MySQL的LIMIT子句。LIMIT接收两个参数值。第一个参数指定了返回结果第一行的偏移量,第二个参数指定了返回结果的最大行数。偏移量指定第一行是0而不是1。

为了计算第一行的偏移量,我们使用MySQL的RAND()方法从0到1之间生成一个随机数。然后我们把这个数字跟我们用COUNT()方法获取倒的表记录数相乘。由于LIMIT的参数必须是int型而不能是float,我们使用FLOOR()来处理结果。FLOOR()会计算小于表达式的最大值。

代码如下:

$offset_result = mysql_query( " SELECT FLOOR(RAND() * COUNT(*)) AS `offset` FROM `table` ");$offset_row = mysql_fetch_object( $offset_result );$offset = $offset_row->offset;$result = mysql_query( " SELECT * FROM `table` LIMIT $offset, 1 " );

在MySQL 4.1以后可以使用子子查询合并上面两个方法:

方法4:

SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

这个方案跟方案二有同样的弱点,只对有唯一id值的表有效。

寻找随机数选取的不同方法,根本目的在于提高速度,那么同等软硬条件下:

最慢的是解决方法一(假定它用了100%的时间)。

方法二用了79%

方法三 - 13%

方法四 - 16%

由此可见,最快的是方法3.

mysql 随机取几万数据,mysql随机取数据的几种方法相关推荐

  1. Mysql使用binlog恢复数据解决误操作问题的两种方法

    Mysql使用binlog恢复数据解决误操作问题的两种方法 参考文章: (1)Mysql使用binlog恢复数据解决误操作问题的两种方法 (2)https://www.cnblogs.com/Data ...

  2. 5.4 一家人才测评机构低随机抽取的10名小企业的经理人用两种方法进行自信心测试,得到的自信心测试分数如下

    2022-11-29 5.4 一家人才测评机构低随机抽取的10名小企业的经理人用两种方法进行自信心测试,得到的自信心测试分数如下 人员编号 方法1 方法2 1 78 71 2 63 44 3 72 6 ...

  3. 怎么把html数据导入excel,将网页表格数据导入到Excel中的两种方法

    将网页表格数据导入到Excel中的第一种方法: 第一步,将包括所需表格的网页打开,并按CTRL+C把网址复制到剪贴板,以备下一步使用. 第二步,打开运行Excel软件,单击菜单栏中的"数据→ ...

  4. 【Arduino串口数据保存到excel中常用三种方法】

    [Arduino串口数据保存到excel中常用三种方法] 1. 前言 2. 利用excel自带Data Streamer读取 2.1 启用 Data Streamer 加载项 2.2 刷写代码并将微控 ...

  5. MySQL数据同步到 Redis 缓存的几种方法

    1 Mysql查完数据,再同步写入到Redis中 缺点1:会对接口造成延迟,因为同步写入redis本身就有延迟,并且还要做重试,如果redis写入失败,还需要重试,那就更费时间了. 缺点2:不解耦,如 ...

  6. mysql 查询慢 分析_MySQL优化:定位慢查询的两种方法以及使用explain分析SQL

    一条SQL查询语句在经过MySQL查询优化器处理后会生成一个所谓的执行计划,这个执行计划展示了具体执行查询的方式,比如多表连接的顺序是什么,对于每个表采用什么访问方法来具体执行查询等等. 本章的内容就 ...

  7. mysql补充(3)优化sql语句查询常用的30种方法

    1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使用!=或<>操作符,否则将引擎放弃使用索 ...

  8. c# 从一组数中随机抽取一定个数_C#产生指定范围随机数的几种方法-亮术网

    在开发过程中,常常要产生随机数,如生成静态 html 网页时,文件名通常用产生随机数的方式获得,生成定单的时候,定单号也可以用产生随机数的方式获得等. 在 C# 中,一般都用 Random 产生随机数 ...

  9. Java实现数据批量导入数据库(优化速度-2种方法)

    目录 程序结构 连接数据程序 批量处理的两种方式 main方法 使用JDBC连接MySQL数据库进行数据插入的时候,经常会遇到数据量较大,插入数据库较慢,如何进行优化,加快导入数据库的速度,批量处理呢 ...

  10. C#将Excel数据表导入SQL数据库的两种方法(转)

    最近用写个winform程序想用excel 文件导入数据库中,网上寻求办法,找到了这个经过尝试可以使用. 方法一: 实现在c#中可高效的将excel数据导入到sqlserver数据库中,很多人通过循环 ...

最新文章

  1. 比特币和以太坊本质有什么区别?
  2. PCA的数学原理(通俗易懂)
  3. 用好这 12 款 Chrome 扩展,让你的「新标签页」变得好看又实用
  4. Bash 文件夹操作
  5. 六、【SAP-PM模块】预防性维护业务流程
  6. [CVPR2019]:专门为卷积神经网络设计的训练方法:RePr
  7. 实例52:python
  8. Single Image Haze Removal(图像去雾)-CVPR’09 Best Paper
  9. 交通流元胞自动机模拟仿真 matlab源码_元胞自动机中的时间反演
  10. 单机 搭建kafka集群 本地_10分钟搭建单机Kafka集群
  11. Swing透明和变换
  12. 【车间调度】基于matlab改进的遗传算法求解车间调度问题【含Matlab源码 H002期】
  13. java 8.0_java8_java8下载64位v8.0 官方版下载-无限下载
  14. 【教程分享】大数据视频教程
  15. 基于Java毕业设计幼儿园后勤管理系统源码+系统+mysql+lw文档+部署软件
  16. 如何下载Chrome历史版本
  17. 利用python编写个性二维码制作工具(支持微信名片二维码),并打包成EXE可执行文件。——001
  18. 城乡规划编制单位资质乙级都要走什么流程
  19. 浅谈华为如何实现区块链的安全隐私保护
  20. 思博伦Avalanche中的Load类型定义_双极未来

热门文章

  1. 文件结束的判定与feof函数
  2. 屏幕适配Flexible.js
  3. 互联网大爆炸:制造业迎来百年不遇的发展机会
  4. 各种耦合关系,耦合,紧耦合,松耦合,解耦
  5. 松耦合系统_分布式系统中的耦合
  6. 聊天驱动式持续集成:微软Teams + Atlassian Bamboo
  7. 九个笑话让你明白人生!
  8. 真特么激动第一个爬虫----爬取豆瓣电影top250
  9. 灰色关联度分析算法(包含matlab源码及实例)
  10. 最大似然估计法(MLE)