`
berrywu
  • 浏览: 127907 次
  • 性别: Icon_minigender_1
  • 来自: 福建
社区版块
存档分类
最新评论

MYSQL的随机抽取实现方法

 
阅读更多

2B青年的写法:

SELECT * FROM tablename ORDER BY RAND() LIMIT 1

 据MYSQL手册上介绍:ORDER BY 语句中,不能使用一个带有RAND() 值的列,原因是 ORDER BY 会计算列的多重时间,但是 仍然可以通过ORDER BY RAND()来实现随机,数据库量大的时候,执行效率超低。

 

文艺青年的写法:

1、

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 1;

 2、

SELECT * FROM `table` 
 WHERE id >= (SELECT floor( RAND() * ((SELECT MAX(id) FROM `table`)-(SELECT MIN(id) FROM `table`)) + (SELECT MIN(id) FROM `table`)))  
 ORDER BY id LIMIT 1;

 最后在php中对这两个语句进行分别查询10次,
后者花费时间 0.147433 秒
前者花费时间 0.015130 秒
看来采用JOIN的语法比直接在WHERE中使用函数效率还要高很多。

 

参考:http://www.cnblogs.com/phper7/archive/2010/05/26/1744063.html

分享到:
评论

相关推荐

    MYSQL 随机 抽取实现方法及效率分析

    但是在MYSQL 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。 但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行...

    随机抽取记录软件

    在技术实现上,随机抽取记录软件通常会利用编程语言中的随机数生成算法,如Python的`random`库或Java的`Random`类。这些算法基于数学原理,可以生成伪随机数序列,确保每次执行时的不确定性。同时,软件可能会结合...

    MYSQL随机抽取查询 MySQL Order By Rand()效率问题

    在MySQL中,随机抽取查询是常见的需求,但使用`ORDER BY RAND()`往往会导致效率低下,尤其是在处理大数据量的表时。这是因为`RAND()`函数在`ORDER BY`子句中会被执行一次对应于每一行的数据扫描,这使得全表扫描成为...

    mysql获取随机数据的方法

    在MySQL中,获取随机数据是常见的需求,尤其是在测试、数据分析或者构建某些特定功能时。本文将探讨两种常用的方法,以及如何根据数据量和需求选择合适的方法。 方法一:使用`ORDER BY RAND()`函数 `ORDER BY RAND...

    mysql随机抽取一定数量的记录实例讲解

    总结来说,从MySQL表中随机抽取记录,应根据数据量和性能需求选择合适的方法。`order by rand()`适用于小规模数据,而`max(id) * rand()`则适合大数据量的场景。在实际操作中,可以结合业务逻辑和数据库优化技巧,...

    PHP实现在数据库百万条数据中随机获取20条记录的方法

    本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。分享给大家供大家参考,具体如下: 额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是...

    随机选题生成word试卷小程序

    【随机选题生成word试卷小程序】是一款利用C#编程语言开发的应用程序,其核心功能是从存储在MySQL数据库中的题库中抽取题目,根据用户指定的科目、题型以及每种题型所需的数量,生成随机化的试卷。这个过程不仅包括...

    Flex 以Tomcat为服务器 通过RemoteObject 连接MySQL 随机取出单词的拼单词游戏

    通过Tomcat,开发者可以搭建一个可靠的平台来处理游戏的数据存储和逻辑处理,如随机抽取并返回MySQL数据库中的单词。 MySQL是一个广泛使用的开源关系型数据库管理系统,它在本项目中用于存储和管理单词数据。开发者...

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

    本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。 首先,创建一个简单的测试表`xdx_test`,用于演示操作步骤: ```sql CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name...

    jsp+ssm+mysql实现在线考试系统.zip

    此外,试题的随机抽取、组卷策略也是重要的设计点。 10. **考试流程** 考试流程包括考生选择考试、开始考试、限时答题、提交试卷、自动评分等环节。开发者需要考虑时间限制、防作弊机制以及成绩的实时显示。 通过...

    SQL随机提取N条记录

    在MySQL中,可以使用RAND()函数结合ORDER BY来实现随机抽取。例如,如果你想要从表`users`中随机抽取5条记录,可以使用以下查询: ```sql SELECT * FROM users ORDER BY RAND() LIMIT 5; ``` 这将返回一个...

    如何从数据库中随机取出10条记录的方法

    ### 如何从数据库中随机取出10条记录的方法 在处理大量数据时,有时我们需要从数据库中随机...综上所述,从数据库中随机取出记录是一项常用且实用的操作,掌握不同的实现方法能够帮助开发者更好地应对各种场景需求。

    随机抽取的sql语句 每班任意抽取3名学生

    下面我们将详细讨论这个SQL语句的工作原理以及如何实现随机抽取。 首先,我们有一个名为`student`的表,它有两个字段:`class`和`name`。`class`字段表示学生所在的班级,而`name`字段则存储学生的姓名。根据题目...

    基于Java SSM框架+Mysql实现的一款在线考试系统

    根据课程类型随机抽取数据库中的考试题库并显示试题 在考试过程中会有计时功能,时间到了之后自动交卷 在考生提交试卷后实现自动阅卷功能,并显示本次考试成绩的细节 查看以往所有考试成绩记录 将这些记录以...

    MySQL Order By Rand()效率分析

    最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 但是,后来我查了一下MYSQL的官方...

    mysql中RAND()随便查询记录效率问题和解决办法分享

    最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 有两个方法可以达成以上效果. 1.新建...

    基于springboot+vue+MySQL实现的在线考试系统+源代码+文档

    考试系统的关键功能包括试题随机抽取、计时、自动评分等。这些可以通过在后端定义好试题库,结合Vue.js的事件驱动机制,在前端实现动态渲染和实时交互。同时,后端需要处理考试提交后的评分逻辑,确保公平公正。 8...

    用PHP与MySQL实现基于B_S架构的在线自测程序.pdf

    MySQL通过SQL语句实现试题的随机抽取,如`SELECT FROM test_book WHERE type=$type ORDER BY RAND() LIMIT 0, $num`,用于生成试卷。PHP函数如`display_opt()`用于格式化输出试题的备选答案,使用Radio Button或...

    java swing mysql在线考试系统.zip

    2. 考试模块:显示随机抽取的试题,用户选择答案,提交后保存至MySQL。 3. 成绩模块:根据用户提交的答案计算分数,并显示在界面上。 4. 题库管理模块:管理员可以添加、修改和删除试题,更新题库数据。 为了实现...

Global site tag (gtag.js) - Google Analytics