最新文章专题视频专题问答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:56:15
文档

mysql随机取数据的几种高效率方法

mysql随机取数据的几种高效率方法:我用最简单的也是常用的方法来看看,下面再介绍高效的mysql随机数据的方法,有需要的朋友可以参考一下。 1]普通方法, 效率太低 代码如下 SELECT * FROM table ORDER BY rand() LIMIT 10; [2] JOIN的方法: 代码如下
推荐度:
导读mysql随机取数据的几种高效率方法:我用最简单的也是常用的方法来看看,下面再介绍高效的mysql随机数据的方法,有需要的朋友可以参考一下。 1]普通方法, 效率太低 代码如下 SELECT * FROM table ORDER BY rand() LIMIT 10; [2] JOIN的方法: 代码如下


我用最简单的也是常用的方法来看看,下面再介绍高效的mysql随机数据的方法,有需要的朋友可以参考一下。

1]普通方法, 效率太低

代码如下

SELECT * FROM table ORDER BY rand() LIMIT 10;

[2] JOIN的方法:

代码如下

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 10;


再把语句完善一下,加上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;


前者花费时间 0.147433 秒
后者花费时间 0.015130 秒
都是查询10咨物。

文档

mysql随机取数据的几种高效率方法

mysql随机取数据的几种高效率方法:我用最简单的也是常用的方法来看看,下面再介绍高效的mysql随机数据的方法,有需要的朋友可以参考一下。 1]普通方法, 效率太低 代码如下 SELECT * FROM table ORDER BY rand() LIMIT 10; [2] JOIN的方法: 代码如下
推荐度:
标签: 方法 数据 效率
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top