「users」という名前のテーブルがあるとしましょう。作成のコード:
CREATE TABLE IF NOT EXISTS users
(id_user INTEGER PRIMARY KEY AUTOINCREMENT,
username VARCHAR(32) COLLATE NOCASE,
passwd_hash VARCHAR(255) NOT NULL DEFAULT '',
passwd_salt VARCHAR(255) NOT NULL DEFAULT '',
email_addr VARCHAR(255) NOT NULL DEFAULT '');
CREATE INDEX IF NOT EXISTS idx_id_user ON users (id_user ASC);
CREATE INDEX IF NOT EXISTS idx_username ON users (username ASC);
プレーヤーがサーバーに参加すると、プレーヤーのユーザー名が登録されているかどうかがチェックされます。
SELECT id_user
FROM users
WHERE username = '%s' LIMIT 1
ユーザー名が登録されている場合、プレイヤーはログインを求められます。ログインを試みると、次のようになります。
SELECT passwd_hash, passwd_salt
FROM users
WHERE id_user = %d
次に、両方のパスワードが一致するかどうかを明らかにチェックします。
私の質問は、インデックスを作成する必要がpasswd_hash
ありますか?passwd_salt