電子メールとパスワードを渡す標準のログイン プロセスを実行する場合、これら 2 つのフィールドにインデックスを付けるのは理にかなっていますか?
他のテーブルのこれら 2 つのフィールドには FK はありません。
電子メールとパスワードを渡す標準のログイン プロセスを実行する場合、これら 2 つのフィールドにインデックスを付けるのは理にかなっていますか?
他のテーブルのこれら 2 つのフィールドには FK はありません。
はい。それは理にかなっている。認証システムが電子メールとパスワードに基づいており、両方の列が同じテーブルにある場合、次のインデックスを作成します (SQL2005+):
CREATE UNIQUE INDEX IUN_MyTable_EmailAddress#Password
ON dbo.MyTable(EmailAddress)
INCLUDE (Password);
インデックスには 2 つの用途があります。
最初: ユーザーの重複 = メールの重複を防ぎます (多かれ少なかれ:bogdan@gmail.com
対を参照bog.dan@gmail.com
)
と
2番目:次のクエリに役立ちます
SELECT ...
FROM dbo.MyTable t
WHERE t.EmailAddress = @pEmailAddress
また
SELECT ...
FROM dbo.MyTable t
WHERE t.EmailAddress = @pEmailAddress
AND t.Password = @pPassword
-- 'p' prefix = parameter
注: このインデックスには、より低い (100 未満の) フィル ファクターを使用します。たとえば、フィル ファクター 90 から始めて、定期的にページ分割が多すぎるかどうかを確認します。これらの観察に応じて、このフィルファクターを多かれ少なかれ増減します。