位置: 编程技术 - 正文

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存储过程)

  • 房产税出现往期数据怎么办
  • 个税申报显示无有效的税费种认定信息已核定
  • 什么是税务学
  • 账簿印花税的计税方法
  • 有形动产租赁服务属于现代服务吗
  • 个体工商户营业执照年检网上申报
  • 小规模发票跨月冲红怎么做账
  • 购买方退货的会计处理
  • 企业间借款利息涉税处理
  • 个体户上季度未申报能补报吗
  • 防伪开票系统税票如何抵扣
  • 环评费用计入管理费用吗 是否需要摊销
  • 邮局劳务费发票几个点
  • 成本差异的种类有哪些?
  • 公司委托公司收款合法吗
  • 进项发票里的印花税如何做账?
  • 商场金银饰品销售该如何建账?
  • 股票回购会计处理
  • 无偿划转净资产为负数的企业账务处理
  • 一般纳税人增票流程
  • 保险企业准备金是什么
  • 去银行打印公户流水需要带什么
  • 预缴增值税的情况四种情形汇总表怎么填
  • iphone手机怎么把电话号码转到sim
  • 在win7系统中如何让电脑恢复出厂设置方法
  • 一次性计提折旧的政策
  • 简易计税 科目
  • 税务检查所得税调整
  • 营改增餐饮行业纳税规则
  • Win10任务栏没有wifi图标
  • 报销差旅费退回余款
  • gwsystemservice.exe是什么进程 有什么作用 gwsystemservice进程查询
  • 科技三项费用拨款共计5000万元
  • php正则表达式匹配字符串
  • php yield 异步
  • 偷税行为五年后被发现要接受行政处罚吗?
  • 商业连锁企业有哪些
  • 物资销售收入
  • “从零开始”
  • php代码用什么工具
  • 数据集介绍
  • VUE3.2 + vue-echarts + DataV 数据可视化大屏(项目)
  • mysqldump命令不存在
  • 带息应收票据账务处理分录
  • 给销售人员的返点怎么做账
  • 房企预缴税款会退税吗
  • 小规模免征增值税2023
  • 委托开发软件的版权归委托人所有
  • 先计提所得税还是先结转成本
  • 公司租用员工的车辆交什么税
  • js中promise的三种状态
  • 织梦怎么套模板
  • mysql使用指南
  • mongodb从入门到商业实战
  • 免税收入与不征收的区别
  • 珊瑚虫怎么变成珊瑚的
  • 计提福利费的会计分录
  • 珠宝行业会计核算流程
  • 固定资产怎么入费用
  • 免税农产品怎么开发票
  • 加盟费开发票
  • 设计费要计入固定成本吗
  • 企业股权无偿转让
  • 体检费用开发票给公司怎么开
  • 取暖费用摊销吗
  • 伤病假条
  • 使用SSIS创建同步数据库数据任务的方法
  • sqlserver数据库中的null值空值表示的是空格或零值
  • xp系统怎么用u盘启动电脑
  • os x10.11el capitan beta3下载地址
  • mongo 安装
  • 枚举目录时出现错误
  • Node.js中的事件循环是什么
  • python 文件头
  • jquery easyui插件
  • 电子税务局怎么添加银行账户信息
  • 通用申报表水利基金怎么填
  • 是否开具发票就要确认企业所得税收入?
  • 河南省地税局副局长
  • 江苏地税每月社保多少钱
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

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

    友情链接: 武汉网站建设