1

私の User モデルには、次のメソッドがあります。

def confirmation_token
    self.confirmation = loop do
        random_token = SecureRandom.urlsafe_base64(16, false)
        break random_token unless User.exists?(confirmation: random_token)
    end
end

このメソッドは、ユーザーの電子メールを確認するためのランダムなトークンを作成するだけです...

ご覧のとおり、User.exists?(confirmation: random_token) の間ループします。これは、ユーザー テーブルに類似のトークンが既に存在しないかどうかを検証することを意味します。

私の質問は次のとおりです。たとえば、「ユーザーテーブル」に多くの行がある場合、パフォーマンスを向上させるために、この(確認)列にインデックスを追加する必要がありますか?

注 (このメソッドは、ユーザーごとに 1 回だけ実行されます ... ユーザーが初めてサインアップしたときに実行されます)

4

2 に答える 2

1

はい。特定の列 (この場合はconfirmation) で多くの検索を行う場合は、その列にインデックスを付ける必要があります。

于 2013-10-08T22:37:29.030 に答える