Какая хорошая длина индекса для текстового столбца MySQL? - PullRequest
11 голосов
/ 19 апреля 2009

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

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

Должен ли я установить максимальную длину? Что лучше сделать меньше?

Ответы [ 2 ]

17 голосов
/ 19 апреля 2009

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

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

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

5 голосов
/ 19 апреля 2009

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

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