最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 科技 - 知识百科 - 正文

mysql中随机查询取值效率优化

来源:动视网 责编:小采 时间:2020-11-09 09:52:23
文档

mysql中随机查询取值效率优化

mysql中随机查询取值效率优化:在mysql中随机查询数据是一个比较常用的功能,但是这个随机查询功能如果没使用好你的数据库就会卡死,特别到了几十万,上百万数据时更要注意了,下面我来介绍mysql中随机查询取值效率优化. mysql使用rand()进行随机查询 代码如下 1 order
推荐度:
导读mysql中随机查询取值效率优化:在mysql中随机查询数据是一个比较常用的功能,但是这个随机查询功能如果没使用好你的数据库就会卡死,特别到了几十万,上百万数据时更要注意了,下面我来介绍mysql中随机查询取值效率优化. mysql使用rand()进行随机查询 代码如下 1 order


在mysql中随机查询数据是一个比较常用的功能,但是这个随机查询功能如果没使用好你的数据库就会卡死,特别到了几十万,上百万数据时更要注意了,下面我来介绍mysql中随机查询取值效率优化.

mysql使用rand()进行随机查询

代码如下

1 order by rand() limit x

随机mysql查询效率极其低下,今晚本人就遇到几个wordpress插件的作者,随机取值,竟然都是直接

代码如下
1 order by rand()

这也太坑爹了,数据一多,譬如你有个5万~10万,加上每天几千IP,那效率就跟蜗牛似的。不信你试试。这是严重不

负责任的随机查询。

后来百度找了一个方法

代码如下

SELECT *
FROM table
WHERE id >= (
SELECT CEIL( RAND( ) * (
SELECT MAX( id )
FROM table ) ) )
LIMIT 1

或者

SELECT *
FROM table
WHERE id >= (
SELECT ROUND( RAND( ) * (
SELECT MAX( id )
FROM table ) ) )
LIMIT 1

但是还是没有效果了,再看下面

代码如下

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 1

这样就快了很多哦,但是这个方法,会导致大部分的取值都在1/2前范围内,需要重新改造下:

代码如下

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;

文档

mysql中随机查询取值效率优化

mysql中随机查询取值效率优化:在mysql中随机查询数据是一个比较常用的功能,但是这个随机查询功能如果没使用好你的数据库就会卡死,特别到了几十万,上百万数据时更要注意了,下面我来介绍mysql中随机查询取值效率优化. mysql使用rand()进行随机查询 代码如下 1 order
推荐度:
标签: 效率 随机 mysql
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top