gpt4 book ai didi

mysql - 针对数百万阵列 IDS 优化 Rails IN 查询

转载 作者:行者123 更新时间:2023-11-29 07:27:22 24 4
gpt4 key购买 nike

想要获取在特定帐户及其各自的 Outlet 注册的用户。

用户和 socket 模型没有任何关联。

导出有_and_belongs_to_many帐户,反之亦然

用户包含字段outlet_code,该字段在outlet表中是唯一的

@account = Account.find(2546)

@outlet_ids = @account.outlets.map(&:id) #-----它返回这样的数组 [1,2,3....1032457],这是动态的

我使用了这个效率不高的查询 => @users = User.where(:outlet_code => @outlet_ids)

最佳答案

我认为你需要的是延迟加载和批量处理。

在您的情况下,最有效的方法(假设您随后以任何方式处理集合)是使用 find_each :

@users = User.where(id: [1,2,3....450000]).find_each.lazy

将返回惰性枚举器的实例:

#<Enumerator::Lazy: ...>

现在您可以使用它并进行迭代 - @users 将按需从数据库加载(延迟)。

关于mysql - 针对数百万阵列 IDS 优化 Rails IN 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34081819/

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