`
varsoft
  • 浏览: 2521579 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

MySQL随机取数据最高效率的方法

 
阅读更多

发现在SQL语句里有一个 ORDER BY rand() 这样的一个语句,这个说是用着方便,但是效率实在是太低了,于是我用了以下的方法来优化,就是用JOIN表的方法来达到这个取随机数据行的方法,你可以用 EXPLAIN SQL语句来分析一下以下两条SQL语句的效率,当然,数据量至少上10万以上才能看出性能。

 

[1]普通方法, 效率太低

 

SELECT * FROM table ORDER BY rand() LIMIT 10;

 

[2] JOIN的方法:

 

SELECT * 

FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * ((SELECT MAX(id) FROM `table`) – (SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)) AS id) AS t2 

WHERE t1.id >= t2.id 

ORDER BY t1.id LIMIT 10;

 

分享到:
评论
1 楼 sws354 2012-08-31  
多表连接的方式效率更低,几百条数据就能看出效果。

相关推荐

    MySql分组后随机获取每组一条数据的操作

    补充知识:在MySQL中,随机选取多条数据也有多种方法,但效率各不相同。以下列举了六种常见的方法: 1. 直接使用`RAND()`函数: ```sql SELECT * FROM tablename ORDER BY RAND() LIMIT 想要获取的数据条数; ```...

    Mysql 性能测试脚本

    为了生成随机数据并进行批量插入,脚本中定义了一些自定义函数和存储过程: 1. **自定义函数**: - **`rand_string(n INT)`**:此函数用于生成长度为n的随机字符串。参数n表示生成字符串的长度。 - `chars_str`: ...

    mysql——驾照考试系统

    在这个系统中,MySQL被用来存储和管理考生信息、试题数据以及考试结果。下面将详细讨论如何使用MySQL来构建这样一个系统。 1. **数据库设计**: - **考生表(Candidates)**:包含考生的基本信息,如身份证号...

    JSP 在线考试系统 数据库是MySQL

    MySQL支持SQL语言,可以创建、查询、更新和删除数据库中的数据。其特性包括ACID事务、多种存储引擎、强大的查询功能以及良好的跨平台兼容性,这些都是构建高效、可扩展的在线考试系统的必要条件。 **在线考试系统的...

    java + mysql 的一个2048非网页版的小游戏

    这是一款基于2048游戏规则的桌面应用程序,它不依赖于浏览器,而是通过Java实现图形用户界面(GUI),并与MySQL数据库进行数据交互。 首先,Java是这个项目的基础,它是一种跨平台的面向对象的编程语言,具有丰富的...

    mysql2005常用函数

    MySQL 2005中包含了一系列常用的函数,这些函数涵盖了数据转换、统计计算、算术运算、取近似值以及字符串处理等多个方面。下面将详细解释这些函数的用途和用法。 1. **转换函数**: - `CONVERT(数据类型, 值, 格式...

    mysql,查询,索引

    这些索引通过不断缩小数据范围来精确找到目标数据,将原本的随机查询转化为有序查找。在数据库中,索引同样扮演着类似的角色,面对多种查询条件(如等值查询、范围查询等),索引的设计至关重要。 #### 三、磁盘I/O...

    jsp_mysql网上考试系统

    8. **统计分析**:系统对考试结果进行统计分析,如平均分、最高分、最低分、及格率等,为教学改进提供数据支持。 该系统强调其“可用”和“很强大”,意味着它可能具有良好的用户体验,稳定运行,并且功能全面。...

    技术沙龙构建高性能的MySQL系统

    - **只取需要的数据:** 避免SELECT *操作。 **具体建议:** - **标准制定:** 制定统一的SQL编写规范。 - **避免SELECT *:** 明确指定需要的字段。 - **不在列上进行运算:** 尽量将运算放在应用层。 - **使用...

    Excel表信息录入数据库-成绩.rar

    这些数据应具有与实际数据相似的特征,例如,随机生成学生的姓名、学号和各科成绩。模拟数据可以帮助我们评估不同录入方法的性能,找出最佳实践。 5. 性能测试:通过统计单位时间录入的学生信息,我们可以衡量不同...

    db数据的读取和存储方式.pdf

    InnoDB存储引擎的数据存储结构以二进制形式组织,最高层次是表空间,它包含了段、区和页。页是基本的读写单位,通常为16KB,可以通过配置选项`innodb_page_size`调整。区的大小至少为1MB,包含至少64个页。这种分层...

    MySql基本查询、连接查询、子查询、正则表达查询讲解

    查询数据是指从数据库中的数据表或视图中获取所需要的数据,在mysql中,可以使用SELECT语句来查询数据。根据查询条件的不同,数据库系统会找到不同的数据。 SELECT语句的基本语法格式如下: [sql] view plain copy ...

    mysql调优代码

    读取缓冲区(`read_buffer_size`)的大小影响着单次顺序读取操作的效率,而随机读取缓冲区(`read_rnd_buffer_size`)则影响着按索引读取记录的效率。 - **调整顺序读取缓冲区**:通过调整`read_buffer_size`的值(如...

    数据结构学习网站的设计与实现.pdf

    关键词中的“JavaWeb”、“Mysql”、“MyEclipse”和“数据结构学习网站”不仅概括了文章的核心内容,也反映了网站开发所用到的技术栈。数据结构学习网站的成功实现,为计算机专业人士提供了一个全新的学习资源,...

    简单谈谈Mysql索引与redis跳表

    MySQL索引和Redis跳表是两种不同的数据结构,它们在数据库和键值存储系统中用于优化数据检索。这里我们将深入探讨这两种技术,并分析其特点、适用场景和优缺点。 MySQL索引是数据库管理系统中用于加速数据查找的...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part1

    实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形计数器 363 实例274 通过图像显示投票统计结果 365 实例275 通过图像显示密码...

    PHP开发实战1200例(第1卷).(清华出版.潘凯华.刘中华).part2

    实例271 清理SESSION缓存提高网站访问的效率 358 第6章 图形图像处理 361 6.1 图像与统计 362 实例272 图形计数器 362 实例273 GD2图形计数器 363 实例274 通过图像显示投票统计结果 365 实例275 通过图像显示密码...

    2019 年计算机等级考试二级MySQL数据库程序设计试题(一).docx

    - **理由**:直接插入排序适用于部分有序的数据集,其时间复杂度为O(n)或O(n^2),具体取决于初始数据的有序程度。 - **比较**: - **堆排序**:适用于大数据量排序,时间复杂度为O(nlogn)。 - **快速排序**:平均...

Global site tag (gtag.js) - Google Analytics