UNIQUE
MySQL中是否有索引的最大大小?我的索引中有六个维度,这导致了一个庞大的索引.UNIQUE
索引有基数限制吗?
我得到了奇怪的无法解释的错误,并想知道是否存在限制UNIQUE
.它可能来自唯一性限制吗?这是它的样子(我也不明白为什么最后三列的基数不会增加).
+-------+------------+----------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment |
+-------+------------+----------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
| table | 0 | PRIMARY | 1 | column_1 | A | 15 | NULL | NULL | | BTREE | | |
| table | 0 | PRIMARY | 2 | column_2 | A | 91948 | NULL | NULL | | BTREE | | |
| table | 0 | PRIMARY | 3 | column_3 | A | 924889 | NULL | NULL | | BTREE | | |
| table | 0 | PRIMARY | 4 | column_4 | A | 15723114 | NULL | NULL | | BTREE | | |
| table | 0 | PRIMARY | 5 | column_5 | A | 15723114 | NULL | NULL | | BTREE | | |
| table | 0 | PRIMARY | 6 | column_6 | A | 15723114 | NULL | NULL | | BTREE | | |
+-------+------------+----------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
Run Code Online (Sandbox Code Playgroud)
svi*_*gen 16
对于InnoDB表,所有索引列的限制为3072字节,可能只占每列的前767个字节.
单列索引的索引键最多可达767个字节.相同的长度限制适用于任何索引键前缀.请参见第13.1.13节"CREATE INDEX语法".
InnoDB内部最大密钥长度为3500字节,但MySQL本身将其限制为3072字节.此限制适用于多列索引中组合索引键的长度.
http://dev.mysql.com/doc/refman/5.1/en/innodb-restrictions.html
所以,严格根据文档,我会说你的索引中最多可以有1000列(InnoDB表上的最大列数),前提是每个列的平均大小为3个字节或更少.
对于MyISAM表,它是16列或1000字节中的较小者.
每个索引的最大列数为16.
最大密钥长度为1000个字节.这也可以通过更改源和重新编译来更改.对于长度大于250字节的密钥的情况,使用比默认的1024字节更大的密钥块大小.
http://dev.mysql.com/doc/refman/5.0/en/myisam-storage-engine.html