gpt4 book ai didi

ruby-on-rails - Rails 5——从数据库中获取随机记录?

转载 作者:行者123 更新时间:2023-12-04 13:25:41 26 4
gpt4 key购买 nike

要从数据库中获取单个随机记录,我目前正在做:
User.all.sample
但是当有 100000+ 用户时,加载它们需要几秒钟,只需选择一个。

从数据库加载单个随机用户的最简单方法是什么?

最佳答案

您可以尝试以下数据库独立查询:

User.find(User.pluck(:id).sample)
[DEBUG] (36.5ms) SELECT `users`.`id` FROM `users`
[DEBUG] User Load (0.5ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 58229 LIMIT 1

这个会触发两个查询,但这个是性能高效的,因为它只花了 37 毫秒 获取单个随机用户记录。

而以下查询大约需要 624.7ms
User.order("RAND()").first
[DEBUG] User Load (624.7ms) SELECT `users`.* FROM `users` ORDER BY RAND() LIMIT 1

我已经检查了 105510 条用户记录。

关于ruby-on-rails - Rails 5——从数据库中获取随机记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525843/

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