gpt4 book ai didi

mysql - 在 mysql 中使用大型数据集随机化结果的最快方法

转载 作者:行者123 更新时间:2023-11-29 03:17:46 25 4
gpt4 key购买 nike

我想从一个有大量要扫描的行的表中随机返回行的顺序

尝试过:

1) select * from table order by rand() limit 1

2) select * from table where id in (select id from table order by rand() limit 1)

2 比 1 快,但在有大行的表上仍然太慢

更新:查询用于实时应用程序。插入、选择和更新大约是 10 次/秒。所以缓存不会是理想的解决方案。此特定情况所需的行数为 1。但也在寻找通用解决方案,其中查询速度快且所需行数 >1

最佳答案

最快的方法是在mysql中使用prepared statement和limit

select @offset:=floor(rand()*total_rows_in_table);
PREPARE STMT FROM 'select id from table limit ?,1';
EXECUTE STMT USING @offset;

total_rows_in_table= 表中的总行数。

相比上面两个要快很多。

限制:获取超过 1 行并不是真正随机的。

关于mysql - 在 mysql 中使用大型数据集随机化结果的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52033268/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com