【发布时间】:2014-08-29 10:48:33
【问题描述】:
我有一个带有以下列的Log 模型:
["id", "username", "event", "parameters", "extras", "created_at", "updated_at"]
我有索引created_at 和username。
现在,我想获取由created_at 排序的每个username 的第一个日志。
一种方法是为每个用户名运行以下查询:
log = Log.where("username = :username", username: username).order(:created_at).first
但这显然会查询数据库很多次(等于用户名的数量)。有没有办法只做一个数据库查询?
【问题讨论】:
-
在 2 列上设置一个索引很重要,例如:“add_index :logs, [:username, :created_at]”。如果您单独为每列设置索引,则它不起作用。
标签: sql ruby-on-rails postgresql activerecord greatest-n-per-group