MySQL 关于用户名、密码的多列索引

标签 mysql database-indexes

在 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 索引。它是一个多列索引,但由于 nicknameUNIQUEpassword 是不是有些多余?为什么要在 nicknamepassword 上建立索引?为什么不仅 nickname 因为它是 UNIQUE

最佳答案

有了这个两列索引mysql就可以运行查询进行身份验证检查(不选择数据的查询,只有idcount(id)按用户名和密码)不实际访问表中的数据,仅通过索引本身,这是最快的

关于MySQL 关于用户名、密码的多列索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34174931/

相关文章:

ruby-on-rails - 如何在 Rails 中实现复合主键

database - 不同类型的数据库索引?

MySQL 索引更新

MySQL 搜索 null 并得到奇怪的结果

php - 在一个 foreach 循环中迭代 3 个表中的每一行 - PHP - Laravel

python - 使用 session.query 通过 SQLAlchemy ORM 更新连接表

sql - 如何在 SQL Server 2012 中创建的临时表上找到索引列表

php - 加载数据本地INFILE - 结果错误

php - Laravel 查询生成器,调用 count() 时使用自定义选择

c# - EF6 codefirst 中唯一的多列