2

ユーザー名とパスワードがMySqlデータベースに存在するかどうかを確認するための最適なクエリはどれですか。

1)SELECT * FROM login_details WHERE username='username' AND password='password'
2)SELECT count(*)FROM login_details WHERE username='username' AND password='password'
3)SELECT count(Username)FROM login_details WHERE username='username' AND password='password'
4)SELECT 1 FROM login_details WHERE username='username' AND password='password'

ありがとう

4

1 に答える 1

11

うまくいけば'password'、実際にはユーザーのパスワードのソルトハッシュであり、両方のリテラルをアプリケーションからパラメーターとして準備済みステートメントに渡しています。

にインデックスがあると仮定すると(username, password)、「最適」は次のようになります。

SELECT EXISTS (
  SELECT * FROM login_details WHERE username = ? AND password = ?
)

このように、MySQLは単一の結果に遭遇すると検索を停止します。

于 2012-11-27T09:44:29.683 に答える