2012-01-17 8 views
1

私は「users」というmysqlテーブルを持っています。明らかな2つのフィールド、 'user'と 'pass'があります。MySQLテーブルの索引付け

マイ認証クエリは、このようなものです:

"SELECT pass FROM users WHERE user = ? AND pass = ?" 

私はインデックスがクエリをスピードアップする可能性が取り払わと思います。 「ユーザー」フィールドまたは「パス」フィールドだけにインデックスを付ける必要がありますか?

また、パスワードをSQL文字列と比較するのは、PHP文字列比較よりも高速です。

+1

ユーザフィールドを一意にする – Stefan

答えて

5

まず、パスワードをプレーンテキストで保存しないでください。パスワードハッシュを代わりに保管してください。

第2に、userまたはpassのいずれかのインデックスが役立ちます。しかし、複合インデックスを(user, pass)に作成すると、このクエリのカバーインデックスになります。これは、データファイルを調べることなく、クエリをインデックスから直接提供できることを意味します。

+0

ありがとう、@Mchl、私はそれを逃しました:-) –

+0

私はプレーンテキストでパスワードを保存していません。それはちょうど愚かであろう。 :) 基本的に複合インデックスが使用するのに最適でしょうか? – rasmusx

+0

@rasmusx:はい、そうだと思います。 –

関連する問題