ActiveRecord::Relation 转换为哈希慢

ActiveRecord::Relation convert to hash slow

i 从数据库中查询5000条记录,然后转换成Hash,'marker_id'作为key,如果'marker_id'也是一样,拼成Array。但是转换为哈希时非常慢。

      total_attrs=MarkerAttr.where(marker_layer_id: layer.id)
      temp_attrs={}
      t=Time.now

      for ta in total_attrs
        if !temp_attrs.has_key?(ta.marker_id)
          temp_attrs["#{ta.marker_id}"]=[]
        end
        temp_attrs["#{ta.marker_id}"].push(ta)
      end
      p "to_hash_time::#{Time.now-t}"
      # TODO:: to_hash_time::1.563641124 

感谢

嗯。我想知道 Enumerable#group_by 是否会更快。试试这个:

 total_attrs = MarkerAttr.where(marker_layer_id: layer.id).all
 temp_attrs = total_attrs.group_by(&:marker_id)