MySQL 获取随机取数据方法及其效率
来源:互联网 发布:中信期货用哪个软件 编辑:程序博客网 时间:2024/05/17 04:43
在MySQL中,要想在表中获取随机一条记录,一般情况下,我们第一个想到的sql语句就是:
SELECT * FROM tablename ORDER BY RAND() LIMIT 1。但在MYSQL的官方手册,里面针对RAND()的提示大概意思就是,在ORDER BY从句里面不能使用RAND()函数,因为这样会导致数据列被多次扫描
You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.
可见如果用上面的方法,查询效率会大打折扣
百度了一下有以下两种方法相对来说查询效率会高点:
方法①:
SELECT * FROM table_name AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM table_name)-(SELECT MIN(id) FROM table_name))+(SELECT MIN(id) FROM table_name)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id LIMIT 1;在本地上测了一下,基本是查询话费时间基本在0.06s左右
方法②:
SELECT * from table_nameWHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM table_name)-(SELECT MIN(id) FROM table_name)) + (SELECT MIN(id) FROM table_name))) ORDER BY id LIMIT 1;在本地的查询时间在0.08s左右
从时间上看采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。
记一下!!!
0 0
- MySQL 获取随机取数据方法及其效率
- MySQL 随机取数据效率问题
- MySQL 随机取数据效率问题
- MySQL中随机获取数据以及效率
- mysql随机取数据
- mysql随机取数据
- mysql随机取数据
- mysql如何随机获取数据的方法
- mysql 随机取一组数据
- mysql 随机取数据 高效
- mysql如何随机取数据
- mysql中取随机数据
- 从数据库随机取数据 四种数据库随机获取10条数据的方法
- mysql实现随机获取几条数据的方法
- MySQL随机获取数据的方法,支持大数据量
- MySQL随机获取数据的方法,支持大数据量
- MySQL随机获取一条数据
- 2015062903 - mysql随机获取数据
- 关于html的一点看法
- Jdbc直连时出现的”未指定转换目标字符集”错误
- 如何配置Red Hat Enterprise Linux的hugepages
- SDK的接入
- Java常用快捷键
- MySQL 获取随机取数据方法及其效率
- <学习笔记>缓存的使用
- CMMI评估及兼职翻译有感
- android 模拟器语言及输入法设置
- centos tomcat
- 2016/12/09 开篇
- 混合编译:VS预编译头文件设置和屏蔽编译警告的操作
- Jquery datatables 重新加载数据
- java-Dom4j解析XML详解