由于速度提升的原因,我决定使用原始SQL。因此,使用ActiveRecord,填充DB的时间为17714 ms,现在我有1730 ms。好,不是吗?但这是一个问题,文本彼此不同,有些人不想去我的数据库。顺便说一句,对于同一组帖子,我通过AR与他们合作时没有遇到任何问题。
insert_arr = []
walls.each do |wall|
wall['items'].each do |post|
if post['text'].empty?
post['text'] = 'репост'
else
post['text'] = post['text'].slice(0, 100) + '...'
end
insert_arr.push "('#{@group[:id]}', '#{post['id']}', '#{post['date']}', '#{post['text']}')"
end
end
sql = "INSERT INTO posts (`group_id`, `post_id`, `post_date`, `post_text`) VALUES #{insert_arr.join(', ')}"
ActiveRecord::Base.connection.execute(sql)
我试图剪切文字,但没有帮助。但是,如果我删除文本就可以了! post['text'] = ''
所以问题出在这里。请帮我。在插入文本之前我该怎么办?
答案 0 :(得分:0)
而不是上面尝试使用常规的ActiveRecord方式,但用事务封装所有插入批量:
INSERT
在每次 var item = document.getElementByClass('object');
var innerImageId = item.firstChild.id;
节省大量时间后,它将避免SQL提交。