什么是返回从数据库中唯一的记录的最佳方法,请考虑以下因素:Ruby on Rails的唯一的记录
@users = User.joins('LEFT JOIN subscriptions s ON users.id = s.user_id').includes(:profile).with_deleted.where("...", params[:conditions]).order("users.#{sort_column}" + ' ' + sort_direction).page params[:page]
它有相当数量的加入的条件和分页。所以现在用户不是唯一的。这是使其具有唯一性的方法之一:
@users = @users.select('DISTINCT(users.id), users.created_at, users.deleted_at , ...')
然而,这似乎是很慢的,我看到了很多的日志,它告诉我,这不是一个好的查询的解释。
@users = @users.uniq{|u| [u.email]}
这似乎是再运行一段时间(超时的网络工作者),比上述声明:
我也使用uniq的方法类似尝试。什么是解除复制记录的正确方法?或者在这种情况下最佳的做法是什么?
大约有120K个用户,但是一次只能显示25个,因此第一个/第二个语句中的.page
方法。