假设我有一个名为“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
被索引吗?