位置: 编程技术 - 正文

MYSQL 随机 抽取实现方法及效率分析(mysql 随机抽样)

编辑:rootadmin
但是,后来我查了一下MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描。但是在MYSQL 3.版本中,仍然可以通过ORDER BY RAND()来实现随机。 但是真正测试一下才发现这样效率非常低。一个万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。 You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times. 搜索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次。即便如此也值得,因为万条的表,查询只需要0.秒不到。 下面的语句采用的是JOIN,mysql的论坛上有人使用 SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1; 我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距。总觉有什么地方不正常。 于是我把语句改写了一下。 SELECT * FROM `table` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))) ORDER BY id LIMIT 1; 这下,效率又提高了,查询时间只有0.秒 最后,再把语句完善一下,加上MIN(id)的判断。我在最开始测试的时候,就是因为没有加上MIN(id)的判断,结果有一半的时间总是查询到表中的前面几行。 完整查询语句是: SELECT * FROM `table` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`))) ORDER BY id LIMIT 1; SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`))+(SELECT MIN(id) FROM `table`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1; 最后在php中对这两个语句进行分别查询次, 前者花费时间 0. 秒 后者花费时间 0. 秒 看来采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。

推荐整理分享MYSQL 随机 抽取实现方法及效率分析(mysql 随机抽样),希望有所帮助,仅作参考,欢迎阅读内容。

MYSQL 随机 抽取实现方法及效率分析(mysql 随机抽样)

文章相关热门搜索词:mysql随机抽取数据,mysql 随机抽样,mysql随机抽取10条数据数据超过五十万,mysql随机抽取10%数据,mysql随机抽取某个范围内的日期,将其作为开心日,mysql随机抽取数据用什么命令,mysql随机抽取10%数据,mysql随机抽取数据50条,内容如对您有帮助,希望把文章链接给更多的朋友!

mysql 存储过程的问题 一开始用phpMyAdmin来执行,后来出现一堆错误,后来去掉了begin,end之后可以正常执行,但要执行存储过程,在phpMyAdmn中不行,而在mysql命令行文本框中就

Mysql my.ini 配置文件详解 Mysqlmy.ini配置文件详解#BEGINCONFIGINFO#DESCR:4GBRAM,只使用InnoDB,ACID,少量的连接,队列负载大#TYPE:SYSTEM#ENDCONFIGINFO##此mysql配置文件例子针对4G内存#主要使用INNODB#

java实现插入mysql二进制文件,blob类型,遇到问题及解决办法 首先是数据库建立要准备的:我们要把放置二进制字段设置为Blob类型,根据文件的大小选择合适的Blob类型,一下是各个Blob类型所能容纳二进制文件的

标签: mysql 随机抽样

本文链接地址:https://www.jiuchutong.com/biancheng/320195.html 转载请保留说明!

上一篇:MySQL 配置文件my.cnf 例子最详细翻译(mysql配置文件my.ini如何配置)

下一篇:mysql 存储过程的问题(mysql8.0存储过程)

  • 捐赠支出税前扣除条件
  • 继续教育容易过吗
  • 事业单位无形资产摊销年限
  • 保险公司车险理赔款如何入账
  • 企业库存现金的限额是由( )核定的
  • 企业购进货物发生的下列相关税费中,应计入货物
  • 住房公积金证书插上为什么登不进去
  • 母公司名称的发票可以计入子公司的开办费处理吗?
  • 工资未发放是否可以仲裁
  • 营改增对运输业的影响
  • 分公司注销总公司会计分录
  • 年终奖需要计入工资交社保吗
  • 为什么预计负债是递延所得税资产
  • 生产酒的税收是多少
  • 已经上传的红字怎么修改
  • windos10不显示桌面
  • 非正常损失为什么不赔偿
  • 王者荣耀中雅典娜的战争女神多少钱
  • 事业单位固定资产计提折旧
  • 税务局返还税款账务处理
  • php escapeshellarg
  • vue3获取当前vue实例
  • 工会经费两种拨缴方式
  • 日本的萤火虫
  • 对于个体工商户不需要满足累计经营三个月以上的条件
  • 工商年报纳税总额包括滞纳金吗
  • php demo
  • 个税申报的本期收入是应发工资吗
  • python cox
  • mysql in()
  • 企业进出口贸易
  • 单一窗口退税数据发送
  • 个税子女教育扣除申报方式怎么选
  • 装修行业小规模最高能开几个点的票
  • 发行股票支付给证券商的费用计入哪
  • 无偿赠送货物如何申报增值税
  • 生产加工企业辅导资料
  • 进口关税减免政策
  • 投资软件和信息技术服务业
  • 房地产开发企业分为几个等级
  • 其他应收款为负数正常吗
  • 小规模纳税人的增值税计入成本吗
  • 金税盘清卡怎么弄
  • 怎么填写专用发票信息
  • 差旅费报销单是谁填写的
  • 职工福利费核算要求
  • win2008r2下载
  • centos 安装方法
  • scanfile.exe
  • win7怎么不显示桌面图标
  • 在u盘安装软件插上就能用
  • ubuntu系统怎么修改root密码
  • ubuntu debian centos
  • linux ili9341
  • 电脑开机黑屏光标闪烁怎么解决
  • 升级电脑win10系统
  • centos7ftp
  • sendmail -t
  • 修改注册表优化Win10
  • memory在电脑里是什么意思
  • win8.1安装应用商店
  • win10未检测到任何网络硬件
  • Windows 7 Apache下计算机无法访问局域网网站的解决方法
  • linux操作系统网课
  • 90后的毕业照
  • 一个简单的灵魂福楼拜
  • python 检测主机存活
  • python基础教程 入门教程
  • shell执行多个命令
  • unity教程完整版
  • jquery获取元素css
  • 基于python语言
  • unity做网页
  • jquery实现轮播图步骤
  • jquery 是否显示
  • 江苏电子税务局操作手册
  • 税控盘异常什么原因
  • 潍坊市滨海经济开发区属于哪里
  • 商贸有限公司怎么运营
  • 广东省税务局发票查询
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设