В MySQL могут поддерживаться различные типы индексов, однако обычно это
тип ISAM
или MyISAM
. Для обоих типов используется индекс B-дерева, так что
приблизительно вычислить размер индексного файла можно по формуле (длина ключа+4)/0.67
, просуммированной по всем ключам (приведено значение для
самого худшего случая, когда все ключи вставлены в порядке сортировки и
сжатые ключи отсутствуют).
В индексах строк сжаты пробелы. Если первая часть индекса является
строкой, префикс также будет сжат. Сжатие пробелов позволяет уменьшить
индексный файл в сравнении со значениями, вычисляемыми по приведенной выше
формуле, если столбец строки содержит много пробелов в конце строки или
является столбцом VARCHAR
, который не всегда используется на полную
длину. Сжатие префикса используется с ключами, которые начинаются со
строки. Сжатие префикса полезно в случае, если имеется много строк с
одинаковыми префиксами.
В таблицах MyISAM
можно также сжимать числа в префиксах, указывая при
создании таблицы PACK_KEYS=1
. Это полезно в случае, когда имеется много
целочисленных ключей с одинаковыми префиксами, а числа хранятся с первым
старшим байтом.