MySQL索引有两个相同的列

时间:2011-10-20 19:26:54

标签: 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'

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

您可以在表中创建第二列,并使用另一列的第一个字符填充它,然后在每个列上创建索引。但是,这可能具有较差的选择性,并不是那么有用。