【发布时间】:2016-05-03 06:30:36
【问题描述】:
我有两个表 users 和 notes,用户记录超过 50k,notes 记录超过 90k。
class User < ActiveRecord::Base
has_many :notes
end
users_table 的架构:
id email created_at
notes_table 的架构:
id user_id created_at category impact_score
我正在尝试创建一个临时表 temp_user_notes,它可以包含两个表的数据,我可以在这些表上执行 ActiveRecord 查询以获取数据。
user_notes_table 的架构:
id user_id notes_id email user_created_at notes_created_at category impact_score
我正在这样做
def self.populate_temp_user_notes
users = User.all
users.each do |user|
user.notes.each do |note|
user_notes = TempUserNote.new
user_notes.user_id = user.id
user_notes.notes_id = note.id
user_notes.auth_token_created_at = user.auth_token_created_at
user_notes.notes_recorded_at = note.recorded_at
user_notes.category = note.category
user_notes.well_being_score = note.perception_score
user_notes.save
end
end
end
遍历所有用途及其注释是一个非常长的记忆消耗过程我可以使用什么其他方法?
从这里编辑:-
我的要求是:我有一系列由 AND 和 OR 分隔的查询,这些查询使用下表:用户、注释、事务、订阅。假设我获取目标用户的查询是(Query1 OR Query2) AND Query3 AND Query4
那么每个查询的输出就是下一个查询的输入。
例如:
total users in DB = 1000
1. user_list = (Query1 or Query2) #=> 500 users
2. taking 500 users from user_list as input for next query
3. user_list = user_list AND Query3 #=> 300 users
4. taking 300 users from point 3 as input for query in point 4
5. user_list = user_list AND Query4 #=> 50 users
在最后一个用户列表中,我有我的目标用户和注释。
【问题讨论】:
标签: mysql ruby-on-rails ruby activerecord