我希望能够从数据库中取回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()相关推荐

  1. python3 mysql代码行_教你用100多行写一个数据库(附源码)|python3教程|python入门|python教程...

    https://www.xin3721.com/eschool/pythonxin3721/ 本文介绍的是以为中国的IT资深人士写的一个简单的数据库,没有我们使用的数据库那么强大,但是值得大家借鉴.可 ...

  2. mysql not exists无效_分析MySQL中哪些情况下数据库索引会失效

    要想分析MySQL查询语句中的相关信息,如是全表查询还是部分查询,就要用到explain. 一.explain 用法:explain +查询语句. id:查询语句的序列号,上面图片中只有一个selec ...

  3. mysql高级查询面试_高级MySQL数据库面试问题 附答案

    因为有大家的支持,我们才能做到现在,感谢你们这一路上对我们的支持.在这篇文章中,我们将主要针对MySQL的实用技巧,讲讲面试中相关的问题. 1. 如何使用SELECT语句找到你正在运行的服务器的版本并 ...

  4. jmeter提取mysql返回值_jmeter连接数据库和提取数据库返回值

    一.在MySQL命令行中,验证MySQL是否能正常登陆.若不能登陆,则重置MySQL的密码. 二.下载mysql-connector-java-5.1.45-bin.jar,将其放入Jmeter安装目 ...

  5. mysql怎么加快搜索_优化mysql数据库 提高检索速度

    在优化查询中,数据库应用(如MySQL)即意味着对工具的操作与使用.使用索引.使用EXPLAIN分析查询以及调整MySQL的内部配置可达到优化查询的目的. 任何一位数据库程序员都会有这样的体会:高通信 ...

  6. 深入浅出mysql唐汉名_深入浅出MySQL++数据库开发、优化与管理维护+第2版+唐汉明 -- 存储引擎 - 数据类型 - 字符集和校验规则 -...

    create schema deepInMySql; use deepInMySql; -- 查看当前默认存储引擎 show variables like '%table_type%'; -- 查看当 ...

  7. mysql双机数据热备份_配置MySQL数据库双机热备份

    1.mysql 数据库没有增量备份的机制,当数据量太大的时候备份是一个很大的问题.还好 mysql 数据库提供了一种主从备份的机制,其实就是把主数据库的所有的数据同时写到备份数据库中.实现 mysql ...

  8. mysql命令4类_【Mysql】mysql数据库的一些常用命令

    一.启动与退出 1.进入MySQL: 输入命令:mysql -u root -p 直接输入安装时的密码即可. 此时的提示符是:mysql> 2.退出MySQL:quit或exit 3.数据库清屏 ...

  9. mysql拒绝远程连接_解决Mysql数据库拒绝远程连接和忘记密码的问题

    解决数据库忘记密码的问题 ERROR 1045 (28000): Access denied for user 'root'@'localhost' (using password: YES) 编辑m ...

最新文章

  1. android-support-v4.jar 免积分下载
  2. springboot集成mybatis-generator时候遇到的问题
  3. 普通行列转换(交叉表,横表变列表)
  4. 不是华为!国内首款5G手机开卖:10分钟送达第一单
  5. 【同行说技术】Python开发、调试、爬虫类工具大全
  6. CoreBluetooth Central模式 Swift版
  7. Java基础IO流 韩顺平Java笔记
  8. 第十二届蓝桥杯题目和解答(C++B组)省赛
  9. pp助手苹果版_PP助手下线iOS版,曾首发iOS 9完美越狱工具,再见~
  10. 遥控器进入鼠标模式,退出鼠标模式,上下左右移动和确认
  11. 计算机图形学的边表教学ppt,计算机图形学(多边形的扫描转换).ppt
  12. [转载]什么是ESD,什么是latch up
  13. WEB 9.jQuery
  14. 数据库工具sqlDBx连接mysql
  15. java计算各个班的平均分
  16. vscode格式化代码使html标签不换行
  17. 泛泰升级包下载工具Windows版介绍_下载_使用说明_编写原理[2014.3.24更新v0.3]
  18. 非企用户该如何推广?什么事非企户呢?
  19. COBIT(cobit框架)
  20. PS设置图片部分透明

热门文章

  1. 计算机基础与组装,1.计算机基础与组装.pptx
  2. python selenium爬虫_详解基于python +Selenium的爬虫
  3. 理论计算机科学研究生,清华大学理论计算机科学中心姚期智组招收保送研究生,请帮忙发到虎...
  4. 字符串格式化成时间格式_小程序wxs中的时间格式化以及格式化时间和date时间互转...
  5. 画瀑布图_道砟石上的庐山瀑布惟妙惟肖
  6. 掌握AI核心技术没有秘籍,能自己创造就是王道
  7. hpe服务器稳定性,hpe服务器安装与配置
  8. html普通幻灯片效果,超酷的CSS3幻灯片效果-前端开发博客_html/css_WEB-ITnose
  9. php插不入数据原因,php程序插数据入mysql, 插入失败问题
  10. mysql消息队列的原理_PHP和MySQL实现消息队列