我有一张有几亿行的表。其中一列是`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'
我该如何解决这个问题?
答案 0 :(得分:1)
没有理由独立于status(1)
索引status
。在status
上创建的一个索引应该同样处理这两种情况。
答案 1 :(得分:1)
您可以在表中创建第二列,并使用另一列的第一个字符填充它,然后在每个列上创建索引。但是,这可能具有较差的选择性,并不是那么有用。