北京SEO

Mysql rand()随机取出记录的优化

2019/10/10/17:35:40  阅读:1680  来源:谷歌SEO算法  标签: 云计算

在mysql中我们要查询数据表中随机数据最常用的就是使用Rand()函数了,但是Rand()函数在使用几万条记录是很快的,如果上千万条时可能会有问题,下面我来介绍Rand()函数的用法.

MySQL随机查询出一条记录,代码如下:

  1. $sql=“SELECT*FROMpinglunWHEREid>=((SELECTMAX(id)FROMpinglun)-(SELECTMIN(id)FROMpinglun))*RAND()+(SELECTMIN(id)FROMpinglun)LIMIT1″;

这样写效率比较高,千万不要用order by rand()那种,数据量大了,order一下效率很低,下面我来介绍一下 随机取出记录的优化.

第一种方法:结合应用层来实现,只要SELECT MAX(id) FROM table;取出最大的id,然后用随机生成一个1~MAX(id)数,比如PHP mt_rand(1,MAX(id)) 然后再在用这个随机id去查询那条记录.

第二种方法:利用数据库生成的随机的id,子查询的方式,代码如下:

SELECT CEIL(RAND() * (SELECT MAX(id) FROM table));

这样我们就可以获取一个随机的id.(对MAX()进行优化,不使用SELECT CEIL(RAND() * MAX(id)) FROM table),执行一下,大大优化了,代码如下:

  1. SELECT*
  2. FROMtable
  3. WHEREid>=(
  4. SELECTCEIL(RAND()*(
  5. SELECTMAX(id)
  6. FROMtable)))
  7. LIMIT1

第三种方法:利用JOIN的方法,代码如下:

  1. SELECT*
  2. FROM`table`ASt1
  3. JOIN(
  4. SELECTROUND(RAND()*(
  5. SELECTMAX(id)
  6. FROM`table`))ASid
  7. )ASt2
  8. WHEREt1.id>=t2.id
  9. ORDERBYt1.idASC
  10. LIMIT1--phpfensi.com

广告内容

Mysql rand()随机取出记录的优化 Mysql rand()随机取出记录的优化 Mysql rand()随机取出记录的优化

相关阅读

热门评论

萧红SEO 萧红SEO

SEO爱好者,分享SEO经验~

总篇数212

精选文章

RMAN中catalog和nocatalog区别介绍 小技巧:为Linux下的文件分配多个权限 zimbra8.5.1安装第三方签名ssl证书的步骤 解决mysql不能远程连接数据库方法 windows服务器mysql增量备份批处理数据库 mysql中slow query log慢日志查询分析 JavaScript跨域问题总结 Linux下负载均衡软件LVS配置(VS/DR)教程 mysql中权限参数说明 MYSQL(错误1053)无法正常启动

SEO最新算法