也来谈一下随即查询数据的效率问题
看到这篇文章:
http://jnote.cn/blog/mysql/mysql-rand-efficiency.html
我做了些测试:
mysql> show create table song\G
*************************** 1. row ***************************
Table: song
Create Table: CREATE TABLE `song` (
`id` int(11) NOT NULL auto_increment COMMENT 'Autoincreament element',
`name` mediumtext NOT NULL,
`datetime` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIME
STAMP,
`rank` int(11) NOT NULL,
PRIMARY KEY (`id`),
KEY `f_rank` (`rank`)
) ENGINE=MyISAM AUTO_INCREMENT=1752001 DEFAULT CHARSET=gbk
1 row in set (0.00 sec)
mysql> select count(1) from song;
+----------+
| count(1) |
+----------+
| 1752000 |
+----------+
1 row in set (0.00 sec)
mysql> select * from song order by rand() limit 10;
+---------+----------+---------------------+---------+
| id | name | datetime | rank |
+---------+----------+---------------------+---------+
| 440107 | t440107 | 2007-12-04 14:59:37 | 4335260 |
| 1237909 | t1237909 | 2007-12-04 15:00:42 | 7867024 |
| 75076 | t75076 | 2007-12-04 14:59:08 | 1725100 |
| 1351876 | t1351876 | 2007-12-04 15:00:52 | 6407879 |
| 915284 | t915284 | 2007-12-04 15:00:15 | 7382198 |
| 110507 | t110507 | 2007-12-04 14:59:11 | 6505687 |
| 1256420 | t1256420 | 2007-12-04 15:00:44 | 8501775 |
| 668347 | t668347 | 2007-12-04 14:59:56 | 4243303 |
| 547132 | t547132 | 2007-12-04 14:59:46 | 7121637 |
| 621792 | t621792 | 2007-12-04 14:59:52 | 7006891 |
+---------+----------+---------------------+---------+
10 rows in set (3.70 sec)
SELECT * FROM song AS t1 JOIN
(
SELECT ROUND(RAND() * (SELECT MAX(id) FROM song)) AS id
) AS t2
WHERE t1.id >= t2.id
ORDER BY t1.id ASC LIMIT 10;
mysql> SELECT * FROM song AS t1 JOIN
-> (
-> SELECT ROUND(RAND() * (SELECT MAX(id) FROM song)) AS id
-> ) AS t2
-> WHERE t1.id >= t2.id
-> ORDER BY t1.id ASC LIMIT 10;
+---------+----------+---------------------+---------+---------+
| id | name | datetime | rank | id |
+---------+----------+---------------------+---------+---------+
| 1566855 | t1566855 | 2007-12-04 15:01:10 | 7827537 | 1566855 |
| 1566856 | t1566856 | 2007-12-04 15:01:10 | 846094 | 1566855 |
| 1566857 | t1566857 | 2007-12-04 15:01:10 | 747858 | 1566855 |
| 1566858 | t1566858 | 2007-12-04 15:01:10 | 1201006 | 1566855 |
| 1566859 | t1566859 | 2007-12-04 15:01:10 | 3761459 | 1566855 |
| 1566860 | t1566860 | 2007-12-04 15:01:10 | 5204274 | 1566855 |
| 1566861 | t1566861 | 2007-12-04 15:01:10 | 4736994 | 1566855 |
| 1566862 | t1566862 | 2007-12-04 15:01:10 | 8072147 | 1566855 |
| 1566863 | t1566863 | 2007-12-04 15:01:10 | 6149754 | 1566855 |
| 1566864 | t1566864 | 2007-12-04 15:01:10 | 6532326 | 1566855 |
+---------+----------+---------------------+---------+---------+
10 rows in set (0.02 sec)
SELECT * FROM `song` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `song`)-(SELECT MIN(id) FROM `song`)) + (SELECT MIN(id) FROM `song`))) ORDER BY id LIMIT 10;
mysql> SELECT * FROM `song` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id)
FROM `song`)-(SELECT MIN(id) FROM `song`)) + (SELECT MIN(id) FROM `song`))) ORD
ER BY id LIMIT 10;
+------+-------+---------------------+---------+
| id | name | datetime | rank |
+------+-------+---------------------+---------+
| 2142 | t2142 | 2007-12-04 14:59:03 | 3644248 |
| 2411 | t2411 | 2007-12-04 14:59:03 | 9358685 |
| 4401 | t4401 | 2007-12-04 14:59:03 | 7664728 |
| 4732 | t4732 | 2007-12-04 14:59:03 | 3501462 |
| 4768 | t4768 | 2007-12-04 14:59:03 | 1688296 |
| 4820 | t4820 | 2007-12-04 14:59:03 | 346328 |
| 5075 | t5075 | 2007-12-04 14:59:03 | 3586428 |
| 5167 | t5167 | 2007-12-04 14:59:03 | 3742607 |
| 5224 | t5224 | 2007-12-04 14:59:03 | 5285546 |
| 6244 | t6244 | 2007-12-04 14:59:03 | 3076592 |
+------+-------+---------------------+---------+
10 rows in set (0.03 sec)
SELECT * FROM `song` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `song`)))) ORDER BY id LIMIT 20;
mysql> SELECT * FROM `song` WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id)
FROM `song`)))) ORDER BY id LIMIT 20;
+------+-------+---------------------+---------+
| id | name | datetime | rank |
+------+-------+---------------------+---------+
| 1874 | t1874 | 2007-12-04 14:59:03 | 1974147 |
| 2090 | t2090 | 2007-12-04 14:59:03 | 8433426 |
| 2653 | t2653 | 2007-12-04 14:59:03 | 2637918 |
| 3244 | t3244 | 2007-12-04 14:59:03 | 2044034 |
| 3538 | t3538 | 2007-12-04 14:59:03 | 728785 |
| 3703 | t3703 | 2007-12-04 14:59:03 | 5099125 |
| 4941 | t4941 | 2007-12-04 14:59:03 | 7530856 |
| 5059 | t5059 | 2007-12-04 14:59:03 | 2147224 |
| 5494 | t5494 | 2007-12-04 14:59:03 | 8994486 |
| 5550 | t5550 | 2007-12-04 14:59:03 | 1054949 |
| 5953 | t5953 | 2007-12-04 14:59:03 | 5898393 |
| 6515 | t6515 | 2007-12-04 14:59:03 | 7227102 |
| 6818 | t6818 | 2007-12-04 14:59:03 | 4292209 |
| 6962 | t6962 | 2007-12-04 14:59:03 | 7107078 |
| 7242 | t7242 | 2007-12-04 14:59:03 | 1639503 |
| 7449 | t7449 | 2007-12-04 14:59:03 | 547861 |
| 8109 | t8109 | 2007-12-04 14:59:03 | 2031446 |
| 8764 | t8764 | 2007-12-04 14:59:03 | 3934261 |
| 8808 | t8808 | 2007-12-04 14:59:03 | 1433932 |
| 9283 | t9283 | 2007-12-04 14:59:04 | 1558430 |
+------+-------+---------------------+---------+
20 rows in set (0.03 sec)
分享到:
相关推荐
Oracle的数据仓库系统的逻辑体系架构是由3层组成: 数据获取层:实现如何从所有源系统中获得原始的业务数据,并对其进行一致性处理,按...按照用户的分析需求,使用报表、随即查询、多维分析和数据挖掘进行数据展现。
生成随即的用户数据,以后再也不用绞尽脑汁凑测试用户数据了。.zip,Framework to Generate Random Users - An Unofficial Swift SDK for randomuser.me
本程序用于对测斜数据进行分析处理,形成数据报表,数据统计分析等首次运行,会在程序所在文件夹添加几个.DLL文件, 随即消失,然后程序启动,此时即可正常使用。下次在运行,就会直接启动主程序,进入数据分析。...
下面小编就为大家带来一篇完美解决mysql启动后随即关闭的问题(ibdata1文件损坏导致)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
随机数据处理方法第三版课后习题答案,中国石油大学(华东)出版社,答案详细,保证准确!
第一种 原文 class RandomErasing(object): def __init__(self, p=0.5, sl=0.02, sh=0.4, r1=0.3, r2=3): self.p = p self.sl = sl self.sh = sh self.r1 = r1 self.r2 = r2 def __call__(self, img): ...
机器学习与数据挖掘的实验报告,包含逻辑回归分析、贝叶斯分类器模型,决策树和随即森林在心脏病数据分析中的应用。包括实验代码和结果分析。
本脚本是项目中的应用脚本,功能是在很多定义好的文件夹中随机产生文件夹名,按着文件夹名拷贝数据到指定文件夹,用到很多函数,都是本人编写……
对MNIST数据集进行三种样本分类,如果电脑内存够大,可以实现更多的类别分类,另外exclass是对随机的两个样本分类,也可以参考,exmuticlassall为对MNIST数据集分类,注释掉的代码也可以实现随即三样本分类并作图。
数据结构算法演示(Windows版) 使 用 手 册 一、 功能简介 本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法...
我们在理论课程结束以后也开始了数据结构课程设计,可以更好的理解数据结构在实际应用中的作用。 关键词: 数据结构、课程设计、计算机与通信学院、教师工资管理。 序言 经过一个学期的学习, 我已经顺利地完成了...
matlab长生随即序列,附源程序,希望大家共同进步
js实现随即图片切换效果所有代码都在里面
Matlab实现高斯随即过程,可变换数据
数据结构算法演示(Windows版) 使 用 手 册 一、 功能简介 本课件是一个动态演示数据结构算法执行过程的辅助教学软件, 它可适应读者对算法的输入数据和过程执行的控制方式的不同需求, 在计算机的屏幕上显示算法执行...
可以随即生成20位以内的密码 可以生成一窜随即组合数字
支持超过100个客户端图片数据随即读取性能不低于20万张/s,单台客户端随即图片数据读取不低于2000张/s;(图片大小:32K) ;数据写入过程数据随即读取性能波动不超过20%。 会根据情况进行图片文件和图片文件打包两种...
写了一个类,里面编写了随即满步基本的方法,适合新手入手,并包含一些其它数据可视化的代码