php MySQL使用rand函数随机取记录

如何在mysql中使用随机数, 如何写一个语句能一下更新几百条MYSQL数据! 需要测试MYSQL数据库,里面有一个上万条数据的数据库,如何写一个PHP文件一下每次更新几百条信息,我都是写一个循环一次更新一条信息,这样我知道用WHILE写就可以了,要是一次更新好比100条数据改如何写呢!

正确答案是:UPDATE cdb_posts SET views = rand(); 顺便给你找了点关于mysql rand函数的实例,如下: 那就在insert 命令中,value()里面用rand(),注意字段宽度是否够一直以为mysql随机查询几条数据,就用 SELECT * FROM `table` ORDER BY RAND() LIMIT 5

就可以了。 但是真正测试一下才发现这样效率非常低。一个15万余条的库,查询5条数据,居然要8秒以上 查看官方手册,也说rand()放在ORDER BY 子句中会被执行多次,自然效率及很低。 You cannot use a column with RAND() values in an ORDER BY clause, because ORDER BY would evaluate the column multiple times.

搜索Google,网上基本上都是查询max(id) * rand()来随机获取数据。 SELECT * FROM `table` AS t1 JOIN (SELECT ROUND(RAND() * (SELECT MAX(id) FROM `table`)) AS id) AS t2 WHERE t1.id >= t2.id ORDER BY t1.id ASC LIMIT 5;

但是这样会产生连续的5条记录。解决办法只能是每次查询一条,查询5次。即便如此也值得,因为15万条的表,查询只需要0.01秒不到。 上面的语句采用的是JOIN,mysql的论坛上有人使用 SELECT * FROM `table` WHERE id >= (SELECT FLOOR( MAX(id) * RAND()) FROM `table` ) ORDER BY id LIMIT 1;

我测试了一下,需要0.5秒,速度也不错,但是跟上面的语句还是有很大差距。总觉有什么地方不正常。 于是我把语句改写了一下。 SELECT * FROM `table` WHERE id >= (SELECT floor(RAND() * (SELECT MAX(id) FROM `table`))) ORDER BY id LIMIT 1;

这下,效率又提高了,查询时间只有0.01秒 最后,再把语句完善一下,加上MIN(id)的判断。我在最开始测试的时候,就是因为没有加上MIN(id)的判断,结果有一半的时间总是查询到表中的前面几行。 完整查询语句是: 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;

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;

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

原文地址 http://www.phpq.net/viewnews-69.html

转载于:https://www.cnblogs.com/xihong2014/p/5251914.html

php MySQL使用rand函数随机取记录(转)相关推荐

  1. sqlserver随机取记录

    sqlserver随机取记录 2009年03月09日 星期一 下午 06:03 SqlServer本身并没有提供随机读取记录的功能,但我们可以通过一些方法来实现这个目的.本文介绍了其中几种方法并比较了 ...

  2. MySQL的rand()函数使用总结

    rand函数使用 使用rand()函数,会产生 [0-1) 的随机小数. mysql> select rand(); +---------------------+ | rand() | +-- ...

  3. mysql navicat创建函数_MySQL 学习记录

    1.入门 1.1 什么是数据库? 简单的说,数据库(英文Database)就是一个存放数据的仓库,这个仓库是按照一定的数据结果(数据结构是指数据的组织形式或数据之间的联系)来组织.存储的,我们可以通过 ...

  4. mysql rand_mysql的rand函数

    项目中需要动态随机生成一些固定位数的随机数,如8位,5位等. 之前看到的写法是这样 ROUND(ROUND(RAND(),5)*100000) 这样写不太准确,有几率出现4位的情况,Rand() 函数 ...

  5. matlab中的rand函数(用于产生随机数)

    均匀分布的随机数或矩阵 语法 Y = rand(n) Y = rand(m,n) Y = rand([m n]) Y = rand(m,n,p,...) Y = rand([m n p...]) Y ...

  6. mysql查询结果随机取一个_从SQL查询结果随机取一条数据

    最近工作中会涉及复杂的SQL语句,还是挺有意思的.以前想写没有应用场景,现在正好可以多锻炼锻炼.我觉得在实际开发中,程序代码并不是最难的,最难的还是SQL.SQL逻辑性最强,而且还要很清楚表设计,业务 ...

  7. 【C】揭秘rand()函数;

    原文地址:http://www.cnblogs.com/ngnetboy/archive/2012/11/23/2784078.html 相信只要是程序猿都会知道rand()函数是用来取随机数的一个库 ...

  8. rand()函数详解

    在编程中有时需要产生一个随机数,来满足程序所要实现的功能,这里介绍一个函数–rand()函数来实现一个随机数的产生. 使用rand()函数需要引#include<stdlib.h>头文件: ...

  9. 【C语言】rand()函数(如何生成指定范围随机数)

    一.rand()函数简介 我们先来看一下cplusplus.com - The C++ Resources Network网站上rand函数的基本信息: 系统生成随机数时需要使用rand函数(rand ...

  10. rand()函数100000随机数_Excel 核心函数篇:常用随机数生成函数

    各位伙伴大家好!我是归一!通过本文你将了解以下Excel随机函数的使用: 1. RAND() RAND()函数没有参数,它返回的是大于等于0,小于1的随机数. 下面,我们使用RAND()函数随机生成一 ...

最新文章

  1. 云计算适用于中小企业吗?
  2. POJ 3177 Redundant Paths (边双连通+缩点)
  3. Oracle宣布新的Java Champions
  4. 景安服务器域名解析不起作用的正确解析方式之一
  5. 数字和为sum的方法数
  6. hdfs java api 读写文件操作_第十讲:通过JavaAPI对HDFS读写
  7. PyQt5教程 - pyqt gui编程
  8. [JS]视频总结-第一部分_了解JavaScript
  9. 拓端tecdat|R语言逐步多元回归模型分析长鼻鱼密度影响因素
  10. poi 拆分带图片的word_POI导出简单的带有图片的Word文档
  11. 编译原理研究性学习专题 2——递归下降语法分析设计原理与实现
  12. 服务器共享文件防复制软件,大势至禁止复制服务器共享文件软件
  13. gii无法访问 yii2_YII2框架访问gii、debug页面404的错误解决方法
  14. java 从已知日期计算干支纪日_天干地支纪日怎么计算?
  15. 记几次 [线上环境] Dubbo 线程池占满原因分析(第三次:GC STW)
  16. realplayer java,javascript控制realplayer对象使用
  17. iphone 计算机知道密码忘了,苹果笔记本密码忘了怎么办_苹果笔记本密码忘记如何解决-win7之家...
  18. springboot 健康饮食
  19. Java手机号码正则表达式验证
  20. linux能不能装小狼毫输入法,Ubuntu14.04中fcitx-rime中州韵输入法安装设置

热门文章

  1. 清华ACL'22 | 一文读懂刘知远所在实验室18篇论文详情
  2. Yann LeCun提出首个多模态高性能自监督算法,语音、图像文本全部SOTA
  3. 谈一谈,如何在没有实际项目环境下,既能提高科研水平又能锻炼工程能力?...
  4. 权重不确定的概率线性回归
  5. 谁是杨强?首位AAAI华人主席,身兼5大顶级组织Fellow,也是华为诺亚方舟实验室开创者...
  6. 本周论文推荐(迁移学习、图神经网络)
  7. 赛尔笔记 | 自然语言处理中的迁移学习(下)
  8. 介绍4个大神常用而你不常用的python函数--assert,map,filter,reduce
  9. 【每日算法Day 93】不用额外空间,你会旋转一个矩阵吗?
  10. RAC架构之业务分割