MySQL中是否有UNIQUE
索引的最大大小?
我的索引中有六个维度,这导致了一个庞大的索引。
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 | | |
+-------+------------+----------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
答案 0 :(得分:15)
对于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