mysql随机抽取一定数量的记录实例讲解
作者:沉默的土豆 时间:2024-01-21 07:19:38
以前碰见这种使用场景都是直接order by rand()来处理的,但是效率实在是不敢恭维,所以最近又碰见这种场景,在网上找寻下比较好的解决办法.
1.order by rand()
写法:
SELECT
id
FROM
`table`
ORDER BY
rand()
这种写法的缺点是rand函数在order by中被执行多次,影响效率。
2.max(id) * rand() 使用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 1;
网上的大佬们都推荐第二种写法,特此记录下,感觉最大id和最小id可以放在程序里来计算。
这里有个问题是如果取多条 那么一定是连续的,所以如果是不想取连续数据,得循环,不过此语句效率极高,所以循环查询是可以做的。
来源:https://www.cnblogs.com/tudou1223/p/11473988.html
标签:mysql,随机抽取


猜你喜欢
9个提高 Python 编程的小技巧
2022-01-20 16:53:28
数字人整合动网论坛的方法
2009-05-29 18:23:00
MySQL Version确认问题(版本确认)
2024-01-19 15:20:47
python 图像插值 最近邻、双线性、双三次实例
2023-01-09 07:48:56
PyQt5显示GIF图片的方法
2023-04-04 02:22:29

谈谈CSS样式表的命名规范
2007-10-08 12:41:00
Python整数与Numpy数据溢出问题解决
2023-02-02 00:39:36

便捷提取python导入包的属性方法
2022-05-11 05:07:17
MySQL性能压力基准测试工具sysbench的使用简介
2024-01-25 04:58:35
Python计算双重差分模型DID及其对应P值使用详解
2022-08-06 21:07:53

Keras自定义实现带masking的meanpooling层方式
2021-06-23 03:29:47

Access中的模糊查询
2007-11-18 14:57:00
Python稀疏矩阵及参数保存代码实现
2021-05-10 08:18:34

Git 教程之服务器搭建详解
2022-07-28 06:44:20
python opencv 图像尺寸变换方法
2023-09-27 20:33:03
JavaScript运动框架 多值运动(四)
2023-09-08 01:44:51

基于OpenCV实现视频循环播放
2023-07-13 09:10:33
ASP.NET(AJAX+JSON)实现对象调用
2023-07-19 12:29:33
tensorflow多维张量计算实例
2022-02-05 00:43:48

使用已经得到的keras模型识别自己手写的数字方式
2021-04-03 17:41:11
