mysql 返回随机行_从mysql数据库返回随机行而不使用rand()
我希望能够从数据库中取回15条左右的记录。我已经看到,使用WHERE id = rand()会导致性能问题,因为我的数据库变得更大。我所见过的所有解决方案都适用于选择一个随机记录。我想获得倍数。从mysql数据库返回随机行而不使用rand()
有谁知道有效的方法来做到这一点的大型数据库?
编辑:
进一步编辑和测试:
我使用的MyISAM做了一个非常简单的表格,一个新的数据库上。我给了这3个字段:autokey(无符号自动数字键)bigdata(一个大的斑点)和somemore(一个中等的int)。 然后,我将随机数据应用到表中,并使用Navicat运行一系列查询。下面是结果:
Query 1: select * from test order by rand() limit 15
Query 2: select *
from
test
join
(select round(rand()*(select max(autokey) from test)) as val from test limit 15) as rnd
on
rnd.val=test.autokey;`
(我试过两个选择,选择不同的和它并没有明显的差异)
和:
Query 3 (I only ran this on the second test):
SELECT *
FROM (
SELECT @cnt := COUNT(*) + 1,
@lim := 10
FROM test
) vars
STRAIGHT_JOIN
(
SELECT r.*,
@lim := @lim - 1
FROM test r
WHERE (@cnt := @cnt - 1)
AND RAND(20090301) < @lim/@cnt
) i
ROWS: QUERY 1: QUERY 2: QUERY 3:
2,060,922 2.977s 0.002s N/A
3,043,406 5.334s 0.001s 1.260
我想要做更多的行,所以我可以看到查询3是如何缩放的,但是在这个时候电话,它似乎好像清晰的赢家是查询2。
我之前包裹了这个测试,并宣布一个答案,而我拥有所有这些数据和测试环境的搭建,任何人都可以提出任何进一步的测试?
+0
这些可能会有所帮助:http://stackoverflow.com/questions/142242/what-是最好的方式来挑选一个随机排从一个表在MySQL中,http://stackoverflow.com/questions/1244555/how-can-i-optimize-mysqls- order-by-rand-function,http://stackoverflow.com/questions/1868102/order-by-rand-alternative –
2010-08-03 15:12:06
mysql 返回随机行_从mysql数据库返回随机行而不使用rand()相关推荐
- python3 mysql代码行_教你用100多行写一个数据库(附源码)|python3教程|python入门|python教程...
https://www.xin3721.com/eschool/pythonxin3721/ 本文介绍的是以为中国的IT资深人士写的一个简单的数据库,没有我们使用的数据库那么强大,但是值得大家借鉴.可 ...
- mysql not exists无效_分析MySQL中哪些情况下数据库索引会失效
要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain. 一.explain 用法:explain +查询语句. id:查询语句的序列号,上面图片中只有一个selec ...
- mysql高级查询面试_高级MySQL数据库面试问题 附答案
因为有大家的支持,我们才能做到现在,感谢你们这一路上对我们的支持.在这篇文章中,我们将主要针对MySQL的实用技巧,讲讲面试中相关的问题. 1. 如何使用SELECT语句找到你正在运行的服务器的版本并 ...
- jmeter提取mysql返回值_jmeter连接数据库和提取数据库返回值
一.在MySQL命令行中,验证MySQL是否能正常登陆.若不能登陆,则重置MySQL的密码. 二.下载mysql-connector-java-5.1.45-bin.jar,将其放入Jmeter安装目 ...
- mysql怎么加快搜索_优化mysql数据库 提高检索速度
在优化查询中,数据库应用(如MySQL)即意味着对工具的操作与使用.使用索引.使用EXPLAIN分析查询以及调整MySQL的内部配置可达到优化查询的目的. 任何一位数据库程序员都会有这样的体会:高通信 ...
- 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...
create schema deepInMySql; use deepInMySql; -- 查看当前默认存储引擎 show variables like '%table_type%'; -- 查看当 ...
- mysql双机数据热备份_配置MySQL数据库双机热备份
1.mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现 mysql ...
- mysql命令4类_【Mysql】mysql数据库的一些常用命令
一.启动与退出 1.进入MySQL: 输入命令:mysql -u root -p 直接输入安装时的密码即可. 此时的提示符是:mysql> 2.退出MySQL:quit或exit 3.数据库清屏 ...
- mysql拒绝远程连接_解决Mysql数据库拒绝远程连接和忘记密码的问题
解决数据库忘记密码的问题 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 编辑m ...
最新文章
- android-support-v4.jar 免积分下载
- springboot集成mybatis-generator时候遇到的问题
- 普通行列转换(交叉表,横表变列表)
- 不是华为!国内首款5G手机开卖:10分钟送达第一单
- 【同行说技术】Python开发、调试、爬虫类工具大全
- CoreBluetooth Central模式 Swift版
- Java基础IO流 韩顺平Java笔记
- 第十二届蓝桥杯题目和解答(C++B组)省赛
- pp助手苹果版_PP助手下线iOS版,曾首发iOS 9完美越狱工具,再见~
- 遥控器进入鼠标模式,退出鼠标模式,上下左右移动和确认
- 计算机图形学的边表教学ppt,计算机图形学(多边形的扫描转换).ppt
- [转载]什么是ESD,什么是latch up
- WEB 9.jQuery
- 数据库工具sqlDBx连接mysql
- java计算各个班的平均分
- vscode格式化代码使html标签不换行
- 泛泰升级包下载工具Windows版介绍_下载_使用说明_编写原理[2014.3.24更新v0.3]
- 非企用户该如何推广?什么事非企户呢?
- COBIT(cobit框架)
- PS设置图片部分透明
热门文章
- 计算机基础与组装,1.计算机基础与组装.pptx
- python selenium爬虫_详解基于python +Selenium的爬虫
- 理论计算机科学研究生,清华大学理论计算机科学中心姚期智组招收保送研究生,请帮忙发到虎...
- 字符串格式化成时间格式_小程序wxs中的时间格式化以及格式化时间和date时间互转...
- 画瀑布图_道砟石上的庐山瀑布惟妙惟肖
- 掌握AI核心技术没有秘籍,能自己创造就是王道
- hpe服务器稳定性,hpe服务器安装与配置
- html普通幻灯片效果,超酷的CSS3幻灯片效果-前端开发博客_html/css_WEB-ITnose
- php插不入数据原因,php程序插数据入mysql, 插入失败问题
- mysql消息队列的原理_PHP和MySQL实现消息队列