MySQL преодолевает ограничение 1024-байтового индекса - PullRequest
3 голосов
/ 23 ноября 2010

Есть ли способ обойти ограничение размера ключа в 1024 байта в MySQL? В основном это вызывает хаос при попытке составного индекса.

Ответы [ 2 ]

3 голосов
/ 23 ноября 2010

Хотя я не решаюсь предположить, что вы делаете что-то не так (поскольку у меня нет полной информации), довольно необычно, когда один ключ (даже ключ из нескольких частей) настолько велик. Я видел таблицы, в которых совокупность всех ключей в таблице может быть большой, но редко - одним ключом.

Весь смысл ключей в том, чтобы использовать относительно небольшую часть строки, чтобы быстро найти эту строку. Если вы подошли к тому моменту, когда ваши ключи значительного размера, вам, вероятно, придется отступить назад и еще раз изучить, почему вы считаете, что они вам нужны так много.

Лучше всего разместить здесь схему, чтобы мы могли предложить альтернативы.

Если вам действительно нужны ключи такого размера, вы можете обнаружить, что единственной альтернативой является переключение на другую СУБД. Например, DB2 / z имеет ограничение 8 КБ для каждого ключа. Я не предлагаю вам пытаться купить мэйнфрейм здесь, это всего лишь единственная СУБД, для которой я знаю пределы, на пределе возможностей - очевидно, вам стоит взглянуть на СУБД, реализация которой не обойдется в пару миллионов долларов. : -)

1 голос
/ 23 ноября 2010

Вы можете хэшировать значения, используя crc32, MD5 или аналогичные, а затем индексировать хеш.

Вам потребуется добавить дополнительное сравнение с исходным полем в SQL, чтобы справиться с коллизиями, но это не будет стоить вамочень как столкновения крайне редки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...