mysql - 我应该索引什么?用户名还是用户 ID?

标签 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`)
);

我读到过添加索引可以提高查询的性能,因为它不需要查看整个数据库。相反,它将查看索引并匹配数据(如果我错了请纠正我)。

我已经找到了如何很好地创建索引,但还没有找到我应该索引的内容。
我应该在用户名上建立索引吗?电子邮件地址、用户 ID 或我尚未添加的某些字段?

最佳答案

您应该在几乎任何要进行键控查找的列上都有一个索引。在您的某个查询中,是否会执行 where userid = ? 操作?然后索引 userid。您要查找 username 吗?然后索引用户名。 密码怎么样?可能不会,所以不要打扰。

关于mysql - 我应该索引什么?用户名还是用户 ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4588992/

相关文章:

mysql - 在 SQL 语句中添加附加项会导致性能下降

python - 我想从数组中选择特定范围的索引

php - SQL:如何根据标志在所有区域下方显示事件(在没有多对多连接的情况下)

mysql - 列出A表中的记录与B表中只有一个关系,并且在C表中有一个关系

mysql - SQL 组结果为 "sequence"

sql - 使用 SSIS 从 Excel 导入数据,无需知道工作表名称

java - 如何在MySQL中为每个用户存储多个数据

php - 根本不显示消息?

sql - Postgresql:插入两组或更多组的笛卡尔积

javascript - 浏览器中的可索引本地存储有哪些选项?