Назад | Перейти на главную страницу

В MySQL 5.1 InnoDB максимальная длина VARCHAR влияет на размер вторичного индекса?

Если предположить, что данные одинаковы в любом случае, влияет ли максимальная длина VARCHAR на использование пространства вторичным индексом? Использует ли InnoDB записи фиксированной длины для индексов?

Предположим, что мы говорим о MySQL 5.1 с форматом таблицы InnoDB COMPRESSED и что рассматриваемое поле определено как VARCHAR с некоторой длиной, меньшей или равной 255 (так что он использует только один байт для смещения).

Вот пример использования:

У меня есть сервер с очень большой таблицей (несколько гигабайт). Одно из полей в настоящее время - VARCHAR (7). Нам нужно это немного дольше, и мы думаем о том, чтобы сделать его VARCHAR (255), но мы обеспокоены тем, что это приведет к раздуванию индекса.

Нет, innodb не полностью раскрывает поля varchar при использовании во вторичных индексах.

У Ива Трюдо есть хорошая запись в блоге пару лет назад, которая явно доказывает это, копаясь на страницах innodb с помощью инструмента восстановления innodb: http://www.bigdbahead.com/?p=150