mysql随机查询多条记录表_MySQL 随机查询表中N条记录
mysql 随机查询N条记录
method 1 :
SELECT * FROM tablename ORDER BY RAND() LIMIT N;
method 2 :
SELECT * FROM tablename AS T1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM tablename)) AS id)AS T2 WHERE T1.id >= T2.id ORDER BY T1.id ASC LIMIT N;
method 2 相比 method 1 效率要高些,
TESTING CASE :
不同数量级的表的查询对比
[[email protected] scripts]# mysql -e "select count(*) from tkglobal.user;"
+----------+
| count(*) |
+----------+
| 6555 |
+----------+
[[email protected] scripts]# mysql -e "select count(*) from tkglobal.dynamiccatalogue;"
+----------+
| count(*) |
+----------+
| 38756021 |
+----------+
利用linux time tool to test cost time
[[email protected] scripts]# timemysql -e "SELECT id,name FROM tkglobal.user ORDER BY RAND() LIMIT 1; "
+-------+--------+
| id | name |
+-------+--------+
| 49303 | 2871 |
+-------+--------+
real 0m0.011s
user 0m0.001s
sys 0m0.004s
[[email protected] scripts]# timemysql -e "SELECT xid,SiteID FROM tkglobal.dynamiccatalogue ORDER BY RAND() LIMIT 1; "
+---------+--------+
| xid | SiteID |
+---------+--------+
| dcmid | 13 |
+---------+--------+
real 0m51.931s
user 0m0.001s
sys 0m0.005s
[[email protected] scripts]# timemysql -e "SELECT id,name FROM tkglobal.user AS T1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM tkglobal.user)) AS id)AS T2 WHERE T1.id >= T2.id ORDER BY T1.id ASC LIMIT 1; "
ERROR 1052 (23000) at line 1: Column ‘id‘ in field list is ambiguous
real 0m0.006s
user 0m0.002s
sys 0m0.003s
[[email protected] scripts]# timemysql -e "SELECT xid,SiteID FROM tkglobal.dynamiccatalogue AS T1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM tkglobal.dynamiccatalogue)) AS id)AS T2 WHERE T1.id >= T2.id ORDER BY T1.id ASC LIMIT 1; "
ERROR 1247 (42S22) at line 1: Reference ‘id‘ not supported (forward reference in item list)
real 0m0.005s
user 0m0.002s
sys 0m0.002s
发现:
在表中数据很大的时候,method 2 相比method1 效率高出了很多
原文:http://colinspace.blog.51cto.com/1043642/1364260
mysql随机查询多条记录表_MySQL 随机查询表中N条记录相关推荐
- 用一条sql语句删除表中所相同记录
用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...
- mysql 子查询多个字段_MySql基础
本文章目标 一.为什么要学习数据库 二.数据库的相关概念 DBMS.DB.SQL 三.数据库存储数据的特点 四.初始MySQL MySQL产品的介绍 MySQL产品的安装 ...
- mysql 慢查询日志的作用_MySQL慢查询日志的作用和开启
前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...
- mysql 可以用多个索引_mysql索引合并:一条sql可以使用多个索引
前言 mysql的索引合并并不是什么新特性.早在mysql5.0版本就已经实现.之所以还写这篇博文,是因为好多人还一直保留着一条sql语句只能使用一个索引的错误观念.本文会通过一些示例来说明如何使用索 ...
- mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找
Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...
- mysql中如何删除空记录表_mysql删除表中的记录
大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...
- mysql怎么查询借阅相同图书_MySQL查询练习2
MySQL查询练习2 导读: 本次MySQL的查询语句是本人考试题目: 所有题目都已通过: 该查询练习并没有sql文件进行检查: 如果有书写以及其他错误欢迎指出. 题目正文: 1.找出借书超过5本的借 ...
- mysql模糊查询sal怎么写_MySQL操作符条件查询
MySQL操作符包括很多种,通过前面的文章,相信大家已经认识MySQL比较操作符中的等号和不等号操作符了,这篇文章对MySQL操作符条件查询的相关操作进行简单的介绍,相信会对正在学习MySQL数据库的 ...
- mysql模糊查询sal怎么写_MySQL条件查询
MySQL条件查询 条件查询需要用到where语句,where必须放到from语句表的后面. 支持如下运算符: 运算符 说明 = 等于 <>或!= 不等于 < 小于 <= 小于 ...
最新文章
- 对Erlang开发者的几点建议
- 【Java 并发编程】线程指令重排序问题 ( 指令重排序规范 | volatile 关键字禁止指令重排序 )
- Qt Creator使用其他构建系统
- STM32的I2C特性及架构
- Spring Boot 启动载入数据 CommandLineRunner
- C#编程(四十八)----------列表
- VR究竟多奇幻?eSmart邀你共赴一场VR奇幻之旅!
- 时间管理----分析工作安排和首要任务
- 如何在MySQL中设置外键约束以及外键的作用
- 用 powershell 脚本 .ps1 写一个自动化的「编译->链接->运行C++文件」脚本
- android单例模式代码,设计模式(一):Android 源码中的单例模式
- python3使用ddt框架进行外部传参
- ultraedit激活
- pkm与png的相互转化
- flutter_app\key.jks‘ not found for signing config ‘release‘.
- Win11录屏方法介绍
- 使用python制作pdf的格式转换程序
- 区块链技术在食品溯源中的应用
- DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
- 【电容】关于电容,这篇说得太详细了