gpt4 book ai didi

php - 如何对选定的行(真正)随机排序?

转载 作者:行者123 更新时间:2023-11-29 08:57:00 26 4
gpt4 key购买 nike

目前,我在 PHP 脚本中使用此查询:

SELECT * FROM `ebooks` WHERE `id`!=$ebook[id] ORDER BY RAND() LIMIT 125;

数据库最多大约有 2500 行,但我读到,随着数据库中数据的增长,ORDER BY RAND() 最终会减慢处理时间。

因此,我正在为我的查询寻找一种替代方法,以使事情仍然顺利运行。

此外,我注意到 ORDER BY RAND() 并没有真正随机化行,因为我经常看到它遵循某种有时会一遍又一遍重复的模式。

有什么方法可以真正随机化行吗?

最佳答案

RAND() 函数是一个伪随机数生成器,如果您不使用不同的值初始化它,将会给您相同的数字序列,所以您应该做的是:

SELECT * FROM `ebooks` WHERE `id`!=$ebook[id] ORDER BY RAND(UNIX_TIMESTAMP()) LIMIT 125;

这将从当前时间开始为随机数生成器提供种子,并为您提供不同的数字序列。

RAND() 会减慢 SELECTORDER BY 子句,因为它每次都必须生成随机数然后排序通过它。我建议您将数据返回到调用程序并使用类似 array_rand 的东西将其随机化。 .

关于php - 如何对选定的行(真正)随机排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9688480/

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