Подтвердить что ты не робот

Максимальный размер индекса 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      |         |               |
+-------+------------+----------+--------------+---------------+-----------+-------------+----------+--------+------+------------+---------+---------------+
4b9b3361

Ответ 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