Mysql Rails:处理大型集合
我已将联系人分组为具有关联订阅的集合。 这些订阅经常被创建和删除 每个联系人集合可以包含大约30.000到50.000个对象 在为30.000个联系人创建订阅时,我迭代contacts集合并填充sql值数组。之后,我手动执行一条包含所有这些值的sql insert语句:Mysql Rails:处理大型集合,mysql,ruby-on-rails,Mysql,Ruby On Rails,我已将联系人分组为具有关联订阅的集合。 这些订阅经常被创建和删除 每个联系人集合可以包含大约30.000到50.000个对象 在为30.000个联系人创建订阅时,我迭代contacts集合并填充sql值数组。之后,我手动执行一条包含所有这些值的sql insert语句: sql_values = [] contacts.each do |contact| sql_values << ["(#{contact.id}, #{newsletter.id}, #{contact_gro
sql_values = []
contacts.each do |contact|
sql_values << ["(#{contact.id}, #{newsletter.id}, #{contact_group_id})"]
end
if sql_values.any?
ActiveRecord::Base.connection.execute(
"INSERT INTO subscriptions (contact_id, newsletter_id, contact_group_id) VALUES #{sql_values.join(", ")}"
)
sql_values = nil
end
sql\u值=[]
联系人。每个do |联系人|
sql_值这是一个非常弱的生产机器,我应该说:)如何检索联系人?使用优化的查询?你不能将关系颠倒过来,在当前对象中使用联系人id吗?我刚刚注意到了这个问题。我正在使用acts_作为标记来标记联系人。因此,contacts集合是一个非常大的sql查询,连接到tags表上。此查询太慢了。是否有人使用acts_作为标记并标记大量数据?也许在缓存的标记列表列上创建索引可以优化select?