Максимальный размер индекса UNIQUE в MySQL
Существует ли максимальный размер индекса 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 | | |
+-------+------------+----------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
Ответы
Ответ 1
Для таблиц InnoDB предел составляет 3072 байта по всем индексированным столбцам, предположительно занимая только первые 767 байт каждого столбца.
Индексный ключ для индекса с одним столбцом может составлять до 767 байт. такой же предел длины применяется к любому префиксу указателя ключа. См. Раздел 13.1.13, "CREATE INDEX Syntax".
Внутренняя максимальная длина ключа 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