当前位置: 首页 > news >正文

mysql 如何选择随机行

最简单的方式是使用 mysql 的 ORDER BY RAND() 子句。

 

SELECT  col1  FROM  tbl  ORDER  BY  RAND()  LIMIT  10; 它能很好的运行在小表中。然而,对于大表,生成随机列表行时将产生一个严重的性能问题,MYSQL 需要对每一行进行随机,然后对它们排序。 即使你只想从10W的结果集中取其中随机10行,MySQL也需要对这10W行进行排序并且只提取其中的10行。   为了解决这个问题,我在 WHERE 子句中使用 RAND 并且不使用ORDER BY 子句。首先,你需要计算表中的总行数和你想要的得到随机行数。其次,在 WHERE 子句中加入该碎片数字,并要求结果只能小于(或等于)从这个碎片数字。

 

例如,假设你有一个20万行的表,你只需要从表中随机100行。这个碎片数是从100/总行数得到:100 / 20万= 0.0005。

 

该查询将如下所示:SELECT  col1  FROM  tbl  WHERE  RAND() <= 0.0005;

 

为了得到准确的100行结果集,我们可以增加碎片数字和 limit限制:例如

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

 

相关文章:

  • 字符串通信协议解析函数
  • 虚拟机下host-only模式服务器之间通信
  • DATASNAP远程方法返回TSTREAM正解
  • 对比学习UIKit和AppKit--入门级
  • SVM算法入门
  • 分布函数(连续型连续型)
  • iOS应用开发攻略(助你iOS开发中攻城拔寨)
  • 在Struts2标签s:textfield中显示正确的日期
  • sql 用户定义函数自动生成自增长ID
  • 免费的精品: Productivity Power Tools 动画演示
  • C++之solmyr小品文
  • CMake的应用(在vision studio2008中去掉 ALL_BUILD 和 ZERO_CHECK)
  • 使用sqlite保存数据返回主键
  • 码云 Gitee 新增仓库访问之 IP 白名单功能
  • CentOS 6.4 下安装vsftpd
  • 【Linux系统编程】快速查找errno错误码信息
  • 78. Subsets
  • canvas 绘制双线技巧
  • CentOS7 安装JDK
  • django开发-定时任务的使用
  • Docker: 容器互访的三种方式
  • iOS仿今日头条、壁纸应用、筛选分类、三方微博、颜色填充等源码
  • SpringBoot几种定时任务的实现方式
  • Swift 中的尾递归和蹦床
  • 聊聊spring cloud的LoadBalancerAutoConfiguration
  • 前端存储 - localStorage
  • 区块链共识机制优缺点对比都是什么
  • 算法---两个栈实现一个队列
  • 远离DoS攻击 Windows Server 2016发布DNS政策
  • 做一名精致的JavaScripter 01:JavaScript简介
  • 400多位云计算专家和开发者,加入了同一个组织 ...
  • ​​​​​​​GitLab 之 GitLab-Runner 安装,配置与问题汇总
  • # Swust 12th acm 邀请赛# [ A ] A+B problem [题解]
  • #在 README.md 中生成项目目录结构
  • (function(){})()的分步解析
  • (Redis使用系列) SpirngBoot中关于Redis的值的各种方式的存储与取出 三
  • (Redis使用系列) Springboot 在redis中使用BloomFilter布隆过滤器机制 六
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (八)Spring源码解析:Spring MVC
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (二十四)Flask之flask-session组件
  • (六)c52学习之旅-独立按键
  • (三十五)大数据实战——Superset可视化平台搭建
  • (已解决)报错:Could not load the Qt platform plugin “xcb“
  • (译)2019年前端性能优化清单 — 下篇
  • (转)3D模板阴影原理
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .Net 8.0 新的变化
  • .net 设置默认首页
  • .net6解除文件上传限制。Multipart body length limit 16384 exceeded
  • .Net通用分页类(存储过程分页版,可以选择页码的显示样式,且有中英选择)
  • /etc/motd and /etc/issue
  • @Validated和@Valid校验参数区别
  • [AutoSar]BSW_Memory_Stack_004 创建一个简单NV block并调试
  • [C++][基础]1_变量、常量和基本类型