0

こんにちはみんな私はこの疑問を持っています...

Webサイトにログインするためのユーザー名とパスワードの詳細の記録がある場合は、フォームからユーザー名とパスワードを取得し、contains(を使用して指定されたユーザー名がデータベースに存在するかどうかを確認するために使用します。 )ブール操作。含まれている場合は、パスワードがデータベースに保存されているものと同じであることを確認します。

しかし、GmailやFacebookのようなウェブサイトの場合、何百万ものレコードがあり、認証は非常に迅速です...それらを行う方法..これのためにどのような方法に従いますか

大きなレコードに値がすぐに存在するかどうかをどのようにチェックしますか?プロセスには、処理速度のためにサーバーを追加するだけで済みますか?

答えのためのty..。

**

  • 申し訳ありませんが、インデクサーについて知らずにこの質問を投稿しました..(1つまたは複数の列へのインデックスを作成することにより、全表スキャンが最小化され、代わりにインデックスパスが使用されることがわかりました。これにより、コストが低く、操作が効率的になります..)

**

4

3 に答える 3

0

必要な SQL クエリは 1 つだけです。

select 1 from user u 
where u.login = :theEnteredLogin 
and u.hashed_password = :theHashedEnteredPassword

:xxxクエリのパラメータはどこにありますか)。

ログイン列にインデックスがある場合、または [login - hashed_pa​​ssword] にインデックスがある場合は、クエリの実行に数ミリ秒以上かかることはありません。

于 2012-09-21T09:16:45.837 に答える
0

まあ、彼らはたくさんのサーバーと高性能データベースを持っています. 低レベルでは、ハッシュのテーブルはおそらく高速ルックアップ (二分探索スタイル) のハッシュによってインデックス付けされます。

于 2012-09-21T09:17:22.517 に答える
0

中規模から大規模のデータ セットの場合、ディスク、メモリ、および CPU の適切なサイジングと組み合わせたインデックス作成が、最も採用されているアプローチです。
非常に大きなデータ セットの場合、データベースを分散し、データを分割できます。
非常に大規模なデータ セットの場合、上記のシナリオとは別に、使用されるテクノロジには通常、マップ リデュースモデルの使用が含まれます。

于 2012-09-21T10:07:47.910 に答える