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的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。
MYSQL随机抽取查询:MySQL Order By Rand()效率问题一直是开发人员的常见问题,俺们不是DBA,没有那么牛B,所只能慢慢研究咯,最近由于项目问题,需要大概研究了一下MYSQL的随机抽取实现方法
本文实例讲述了PHP实现在数据库百万条数据中随机获取20条记录的方法。分享给大家供大家参考,具体如下: 额,为什么要写这个? 在去某个公司面试时,让写个算法出来,当时就蒙了,我开发过程中用到算法的吗?又不是...
最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 但是,后来我查了一下MYSQL的官方...
最近由于需要大概研究了一下MYSQL的随机抽取实现方法。举个例子,要从tablename表中随机提取一条记录,大家一般的写法就是:SELECT * FROM tablename ORDER BY RAND() LIMIT 1。 有两个方法可以达成以上效果. 1.新建...
学生考试:学生可以在系统中进行在线考试,根据考试安排选择相应科目的考试,系统会自动随机抽取试题进行考试,提供给学生完成。 成绩统计:系统可以自动批改学生的答题情况,计算得出学生的成绩,并将成绩统计保存...
根据课程类型随机抽取数据库中的考试题库并显示试题;在考试过程中会有计时功能,时间到了之后自动交卷; 在考生提交试卷后实现自动阅卷功能,并显示本次考试成绩的细节。还可以查看以往所有考试成绩记录,并且可以...
本例中的抽奖程序要实现从海量手机号码中一次随机抽取一个号码作为中奖号码,可以多次抽奖,被抽中的号码将不会被再次抽中。抽奖流程:点击“开始”按钮后,程序获取号码信息,滚动显示号码,当点击“停止”按钮后,...
考试模拟:系统支持学生进行四六级考试的模拟测试,提供随机抽取题目和计时功能,模拟真实的考试环境,帮助学生熟悉考试形式和提升应试能力。 成绩评估:系统能够自动评估学生的考试成绩,根据答题情况进行自动评分...
本人做的 在线考试系统 可随机抽取数据库里的三种题型(判断 选择 填空)在jsp页面显示出来 考生可以答题 答完就可以提交试卷 做的不是很规范 压缩包里 有代码 和sql语句 及设计文档 在机子上装有myeclipse tomcat...
一个月J2SE培训的成果,未采用MVC模式 基本功能 ...考题实现数据库随机抽取、考试计时、交卷入库等 2、后台 三个简单的管理界面,用户管理界面、题库管理界面、考生成绩界面 适合人群:初级JAVA学员
实现试题的随机抽取功能,包括选择题(单选题和多选题)和判断题。系统根据学生提交的试卷自动阅卷并给出成绩。学生提交试卷后可以查看自己的成绩。教师可以登录后台管理系统,对自己任教的科目进行试题的增删查改...
考试系统是一种可以从题库中随机抽取指定题目数量的系统,主要由Java开发环境JDK、集成开发环境Eclipse、数据库管理系统软件MySQL和数据库图形化管理工具Navicat 相结合而构成。通过在数据库中创建Test表和Recoed表...
随机抽取试题。 4,实现自动提交试卷的功能。当考试时间达到规定时间时,如果考生还未提交试卷,系统将自动交卷,以保证考试严肃、公正地进行。 5,系统自动阅卷,保证成绩真实准确。 6,考生可以查询考试成绩。 7,...
实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 获取数组当前的键名和值 162 实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例...
实例132 随机抽取数组中元素 161 实例133 二维数组的输出 162 实例134 获取数组当前的键名和值 162 实例135 检测数组中是否存在某个值 163 实例136 获取数组中的当前单元 164 实例137 从数组中随机取出元素 165 实例...
单词测试:用户可以通过该功能进行单词测试,系统会随机抽取一定数量的单词进行测试,测试结束后,系统会给出测试结果和正确答案。 单词本:用户可以将学过的单词添加到单词本中,方便以后复习。 语音识别:该小...
- 点名抽取历史查看实现。先定义一个空列表,然后将取得的学生姓名加载到空列表即可。 4、实现 # 4.1 在MySQL中新建数据库和数据表 新建students_db数据库: ```mysql CREATE DATABASE students_db CHARACTER ...