MySQL 索引有两个相同的列

标签 mysql indexing

我有一个包含数亿行的表。其中一列是`status` varchar(10)

状态中的大多数值都是 1 个字符,有些值最多为 10 个。但是,值的子集有自己的模式。一整组状态值以单个字符 c 开头,后跟 0 到 10,000 之间的数字。

我想使用以下内容索引此列:

ALTER TABLE tbl ADD KEY (status(1), status);

这比拥有两个单独的键要好,一个键位于 status(1)(整列的第一个字符)上,第二个键位于 status 上。他们在一起总是会更快。

但是 MySQL 禁止我创建这样的:

ERROR 1060 (42S21): Duplicate column name 'status'

我该如何解决这个问题?

最佳答案

确实没有理由独立于status来索引status(1)。在 status 上创建的一个索引应该同样能很好地处理这两种情况。

关于MySQL 索引有两个相同的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7841146/

相关文章:

php - 我应该在 Laravel 中为时间戳列创建索引吗

mysql - 类表继承 (CTI) 和插入选择语句

c# - 在Asp.net C#中使用jQuery Ajax插入数据[数据库MySQL]

mysql - 如何使用 group by (MySQL) 查找中值

sql - 使用索引提高 Postgresql 中的查询性能

java - 如何使索引小于大小

python - 在 Django 管理 UI 中引用具有所有外键的模型对象

mysql - 使用复合键从表中删除行

python - 使用索引数组跨多个轴重新排序 numpy 数组的最快方法

sql - 为什么此查询不使用索引?