什麼是返回從數據庫中唯一的記錄的最佳方法,請考慮以下因素: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
方法。