Ale*_*der 5 mysql sql indexing create-table
我有一个相当简单的表(原谅错误/愚蠢,我还在学习.为MySQL编写):
CREATE TABLE IF NOT EXISTS `userdata` (
`userid` UNSIGNED int(18446744073709551615) AUTO_INCREMENT,
`username` char(255) NOT NULL,
`password` char(255) NOT NULL,
`salt` char(255) NOT NULL,
`email` char(255) NOT NULL,
PRIMARY KEY(`userid`)
);
Run Code Online (Sandbox Code Playgroud)
我已经读过添加索引可以提高查询的性能,因为它不需要查看整个数据库.相反,它会查看索引并匹配数据(如果我错了,请纠正我).
我已经找到了如何创建一个足够好的索引,但不是我应该索引的索引.
我应该在用户名上有我的索引吗?电子邮件地址,用户ID或我尚未添加的某个字段?
您应该在几乎任何要进行键控查找的列上都有索引.在你的where userid = ?一个查询中有什么东西可以做吗?然后索引userid.你打算进行查找username吗?然后索引用户名.怎么样password?可能不是,所以不要打扰.
您只应根据您实际使用的列创建索引
在WHERE中的用法:
如果您从未拥有过WHERE username='xyz',则如果没有,则不需要索引
,然后添加索引
JOIN中的用法:
如果您从没有任何JOIN xxxx ON x.userid=u.userid索引,则
如果有很多索引,则不需要索引,然后添加索引