Какая хорошая длина индекса для столбца текста MySQL?

У меня есть столбец TEXT в базе данных MySQL. Приложение похоже на блог, а col содержит тело "сообщений". Я буду делать много сложных логических запросов в этом столбце.

Документы MySQL говорят, что вам нужно установить длину индекса для столбцов TEXT с максимальной длиной 767 байт для таблиц InnoDB.

Должен ли я просто установить его на максимальную длину? Лучше ли это сделать меньше?

Ответ 1

Это зависит от того, что у вас будет в нем.

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

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

Ответ 2

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

Ответ 3

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

Не позволяет ли MySQL оставить его по умолчанию (неограниченно)?