在MySQL数据库中,我必须维护这个表有两个索引
CREATE TABLE users (
id INTEGER UNSIGNED NOT NULL UNIQUE AUTO_INCREMENT,
-- some attributes
nickname VARCHAR (20) NOT NULL UNIQUE,
password VARCHAR (20) NOT NULL,
-- other attributes
PRIMARY KEY (id),
INDEX auth (nickname, password),
INDEX region_id (region)
);
我的问题是关于auth
索引。它是一个多列索引,但由于nickname
是UNIQUE
,因此password
不是多余的?为什么nickname
和password
都有索引?为什么不nickname
,因为它是UNIQUE
?
答案 0 :(得分:1)
拥有这个双列索引mysql可以运行查询进行身份验证检查(不通过用户名和密码选择数据,id
或count(id)
)而不实际访问表中的数据,只有索引本身,这是最快的
答案 1 :(得分:0)
仅当您要搜索索引字段时才需要索引。
我认为最好只创建昵称字段的索引,如果它已经是唯一的那么。
但请确保始终在where子句中使用nickname字段,或者在密码字段之前首先加入。
e.g。其中nickname =' somevalue'和密码=' somepassword'。这将加速查询并减少查询结果的获取时间。