我有一个包含数亿行的表。其中一列是`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/