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 3.23版本中,仍然可以通过ORDER BY RAND()来实现随机。 但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上。查看官方手册,也说rand()放在ORDER BY 子句中会被执行...
在技术实现上,随机抽取记录软件通常会利用编程语言中的随机数生成算法,如Python的`random`库或Java的`Random`类。这些算法基于数学原理,可以生成伪随机数序列,确保每次执行时的不确定性。同时,软件可能会结合...
在MySQL中,随机抽取查询是常见的需求,但使用`ORDER BY RAND()`往往会导致效率低下,尤其是在处理大数据量的表时。这是因为`RAND()`函数在`ORDER BY`子句中会被执行一次对应于每一行的数据扫描,这使得全表扫描成为...
在MySQL中,获取随机数据是常见的需求,尤其是在测试、数据分析或者构建某些特定功能时。本文将探讨两种常用的方法,以及如何根据数据量和需求选择合适的方法。 方法一:使用`ORDER BY RAND()`函数 `ORDER BY RAND...
总结来说,从MySQL表中随机抽取记录,应根据数据量和性能需求选择合适的方法。`order by rand()`适用于小规模数据,而`max(id) * rand()`则适合大数据量的场景。在实际操作中,可以结合业务逻辑和数据库优化技巧,...
本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。分享给大家供大家参考,具体如下: 额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是...
【随机选题生成word试卷小程序】是一款利用C#编程语言开发的应用程序,其核心功能是从存储在MySQL数据库中的题库中抽取题目,根据用户指定的科目、题型以及每种题型所需的数量,生成随机化的试卷。这个过程不仅包括...
通过Tomcat,开发者可以搭建一个可靠的平台来处理游戏的数据存储和逻辑处理,如随机抽取并返回MySQL数据库中的单词。 MySQL是一个广泛使用的开源关系型数据库管理系统,它在本项目中用于存储和管理单词数据。开发者...
本文将详细介绍如何在MySQL中实现这一操作,以及一些关于随机选取数据的优化方法。 首先,创建一个简单的测试表`xdx_test`,用于演示操作步骤: ```sql CREATE TABLE `xdx_test` ( `id` int(11) NOT NULL, `name...
此外,试题的随机抽取、组卷策略也是重要的设计点。 10. **考试流程** 考试流程包括考生选择考试、开始考试、限时答题、提交试卷、自动评分等环节。开发者需要考虑时间限制、防作弊机制以及成绩的实时显示。 通过...
在MySQL中,可以使用RAND()函数结合ORDER BY来实现随机抽取。例如,如果你想要从表`users`中随机抽取5条记录,可以使用以下查询: ```sql SELECT * FROM users ORDER BY RAND() LIMIT 5; ``` 这将返回一个...
### 如何从数据库中随机取出10条记录的方法 在处理大量数据时,有时我们需要从数据库中随机...综上所述,从数据库中随机取出记录是一项常用且实用的操作,掌握不同的实现方法能够帮助开发者更好地应对各种场景需求。
下面我们将详细讨论这个SQL语句的工作原理以及如何实现随机抽取。 首先,我们有一个名为`student`的表,它有两个字段:`class`和`name`。`class`字段表示学生所在的班级,而`name`字段则存储学生的姓名。根据题目...
根据课程类型随机抽取数据库中的考试题库并显示试题 在考试过程中会有计时功能,时间到了之后自动交卷 在考生提交试卷后实现自动阅卷功能,并显示本次考试成绩的细节 查看以往所有考试成绩记录 将这些记录以...
最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 但是,后来我查了一下MYSQL的官方...
最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 有两个方法可以达成以上效果. 1.新建...
考试系统的关键功能包括试题随机抽取、计时、自动评分等。这些可以通过在后端定义好试题库,结合Vue.js的事件驱动机制,在前端实现动态渲染和实时交互。同时,后端需要处理考试提交后的评分逻辑,确保公平公正。 8...
MySQL通过SQL语句实现试题的随机抽取,如`SELECT FROM test_book WHERE type=$type ORDER BY RAND() LIMIT 0, $num`,用于生成试卷。PHP函数如`display_opt()`用于格式化输出试题的备选答案,使用Radio Button或...
2. 考试模块:显示随机抽取的试题,用户选择答案,提交后保存至MySQL。 3. 成绩模块:根据用户提交的答案计算分数,并显示在界面上。 4. 题库管理模块:管理员可以添加、修改和删除试题,更新题库数据。 为了实现...