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条记录相关推荐

  1. 用一条sql语句删除表中所相同记录

    用一条sql语句删除表中所相同记录如下一.具有主键的情况 a.具有唯一性的字段id(为唯一主键) delete table where id not in ( select max(id) from ...

  2. mysql 子查询多个字段_MySql基础

    本文章目标 ​ 一.为什么要学习数据库 ​ 二.数据库的相关概念 ​ DBMS.DB.SQL ​ 三.数据库存储数据的特点 ​ 四.初始MySQL ​ MySQL产品的介绍 ​ MySQL产品的安装 ...

  3. mysql 慢查询日志的作用_MySQL慢查询日志的作用和开启

    前言 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中.lon ...

  4. mysql 可以用多个索引_mysql索引合并:一条sql可以使用多个索引

    前言 mysql的索引合并并不是什么新特性.早在mysql5.0版本就已经实现.之所以还写这篇博文,是因为好多人还一直保留着一条sql语句只能使用一个索引的错误观念.本文会通过一些示例来说明如何使用索 ...

  5. mysql 怎么查询慢sql语句_Mysql中 查询慢的 Sql语句的记录查找

    Mysql中 查询慢的 Sql语句的记录查找 慢查询日志 slow_query_log,是用来记录查询比较慢的sql语句,通过查询日志来查找哪条sql语句比较慢,这样可以对比较慢的sql可以进行优化. ...

  6. mysql中如何删除空记录表_mysql删除表中的记录

    大家都知道,在MySQL中删除一个表中的记录有两种方法,一种是DELETE FROM TABLENAME WHERE... , 还有一种是TRUNCATE TABLE TABLENAME. DELET ...

  7. mysql怎么查询借阅相同图书_MySQL查询练习2

    MySQL查询练习2 导读: 本次MySQL的查询语句是本人考试题目: 所有题目都已通过: 该查询练习并没有sql文件进行检查: 如果有书写以及其他错误欢迎指出. 题目正文: 1.找出借书超过5本的借 ...

  8. mysql模糊查询sal怎么写_MySQL操作符条件查询

    MySQL操作符包括很多种,通过前面的文章,相信大家已经认识MySQL比较操作符中的等号和不等号操作符了,这篇文章对MySQL操作符条件查询的相关操作进行简单的介绍,相信会对正在学习MySQL数据库的 ...

  9. mysql模糊查询sal怎么写_MySQL条件查询

    MySQL条件查询 条件查询需要用到where语句,where必须放到from语句表的后面. 支持如下运算符: 运算符 说明 = 等于 <>或!= 不等于 < 小于 <= 小于 ...

最新文章

  1. 对Erlang开发者的几点建议
  2. 【Java 并发编程】线程指令重排序问题 ( 指令重排序规范 | volatile 关键字禁止指令重排序 )
  3. Qt Creator使用其他构建系统
  4. STM32的I2C特性及架构
  5. Spring Boot 启动载入数据 CommandLineRunner
  6. C#编程(四十八)----------列表
  7. VR究竟多奇幻?eSmart邀你共赴一场VR奇幻之旅!
  8. 时间管理----分析工作安排和首要任务
  9. 如何在MySQL中设置外键约束以及外键的作用
  10. 用 powershell 脚本 .ps1 写一个自动化的「编译->链接->运行C++文件」脚本
  11. android单例模式代码,设计模式(一):Android 源码中的单例模式
  12. python3使用ddt框架进行外部传参
  13. ultraedit激活
  14. pkm与png的相互转化
  15. flutter_app\key.jks‘ not found for signing config ‘release‘.
  16. Win11录屏方法介绍
  17. 使用python制作pdf的格式转换程序
  18. 区块链技术在食品溯源中的应用
  19. DWcs4右下角没有html文件,dreamweaver cs4 (dwcs4)安装图文教程
  20. 【电容】关于电容,这篇说得太详细了

热门文章

  1. 一个老程序员对数据库的一点纠结
  2. 终于找到了满意的博客主题
  3. 2008.05.21 下午茶in萨贝尔
  4. Java算法之两数之加
  5. powerbi python词云图_使用Power BI制作可爱的词云图
  6. 微课|中学生可以这样学Python(例6.1):杨辉三角形
  7. Python使用秦九韶算法求解多项式的值
  8. Python 3.6模拟输入并爬取百度前10页密切相关链接
  9. Python多态原理与示例演示
  10. Linux系统升级维护费,Antergos Linux 宣布停止维护