简而言之,我知道Indexes最适用于Where子句中经常使用的列,以及任何类型的排序,比如“order由“,并与高基数cols。另一方面,如果过度使用,索引会减慢写操作,并且会占用磁盘空间。MYSQL InnoDB引擎索引(B-Tree)和一对一的关系
我有以下字段的用户登记表:
ID INT(11) UNSIGNED NOT NULL AUTO_INCREMENT,
User_name VARCHAR(35) NOT NULL,
BirthDay DATE NOT NULL,
password CHAR(70) NOT NULL,
Security_hint VARCHAR(27) NOT NULL,
Email VARCHAR(225) NOT NULL,
userType ENUM ('a','b','c','d') NOT NULL DEFAULT 'a',
Signup_Date TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP,
activation TINYINT(1) UNSIGNED NOT NULL,
Ip BINARY(16) NOT NULL,
PRIMARY KEY (ID),
UNIQUE KEY User_name (User_name,Email)
- 我很确信与我所选择的所有字段的数据类型。
- 字段
Signup_Date
和Security_hint
很少会被查询,所以我决定在一个单独的表中隔离它们并使用外键使用1-1关系。这个策略是否有效?这种策略可能导致性能下降吗? - 重要的一点:我是否还需要为PASSWORD字段编制索引以便使登录过程非常快速?
非常感谢你们提前。
编辑:我的登录查询是SELECT columns FROM users WHERE username = "x" AND password = "stuff"
。我使用的指数电子邮件只是为了让现有的电子邮件快速的检查,如电子邮件和用户名必须为每个用户
你应该只问一个问题,因为它可以更容易地回答。通过一次回答两个问题,你可以完全回答第一个答案,而其他人对第二个问题有最好的答案 - >哪一个答案应该被接受? – Philipp
@菲利普。如果这两个问题的答案很好,如果只有一个问题需要回答,我希望它是重要的一个。谢谢 – Tim