2

電子メールとパスワードを渡す標準のログイン プロセスを実行する場合、これら 2 つのフィールドにインデックスを付けるのは理にかなっていますか?

他のテーブルのこれら 2 つのフィールドには FK はありません。

4

2 に答える 2

2

はい。それは理にかなっている。認証システムが電子メールとパスワードに基づいており、両方の列が同じテーブルにある場合、次のインデックスを作成します (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 から始めて、定期的にページ分割が多すぎるかどうかを確認します。これらの観察に応じて、このフィルファクターを多かれ少なかれ増減します。

于 2013-10-05T22:07:31.417 に答える