【发布时间】:2011-03-24 17:32:45
【问题描述】:
让我们说。如果我在我的系统上注册了 1,000,000 个用户,并且我有一个包含 500 个名称的列表。
我想将这些名称与我系统上的用户数量进行交叉检查,以查看哪些名称/用户已在数据库上注册。
这样的过程会显着减慢应用程序的速度吗?还是这种事情经常发生?
也许我可以每 30 分钟缓存一次结果,这样我就不必每次都调用它。
编辑>>一点澄清:
我忘了提到我正在尝试更新 500 个名字的列表。因此,如果 'foobar' 和 'joe' 在此列表中并且也在数据库中注册,那么我要做的就是从列表中删除 'foobar' 和 'joe',给我 498 个名称。
我认为不适合做这样的事情:
User.where('name in (?)', Array('foobar', 'joe'))
我会做这样的事情:
User.each do |registered_user|
index = list.index(list.find{ |user| user.screen_name.downcase == registered_user.screen_name.downcase })
list.delete_at(index) if index
end
filtered_list = list
上面的代码,矫枉过正吗?
【问题讨论】:
标签: sql ruby-on-rails database postgresql