Помогите с индексом по базе данных - PullRequest
0 голосов
/ 29 марта 2011

Является ли хорошей идеей создать индекс для поля VARCHAR (500)? Я собираюсь сделать большой поиск в нем, но я не уверен, что создание индекса для такого «большого» поля - хорошая идея?

Что ты думаешь?

Ответы [ 3 ]

1 голос
/ 29 марта 2011

Обычно это не очень хорошая идея, поскольку индексные файлы будут огромными, а поиск - относительно медленным. В качестве индекса лучше использовать префикс поля, например первые 32 или 64 символа поля. Другая возможность состоит в том, что, если имеет смысл использовать полнотекстовый индекс,

0 голосов
/ 29 марта 2011

Вы должны поместить индексы там, где часто используемые запросы будут выполняться быстрее, однако есть ряд проблем, которые стоит рассмотреть

  • Индексы имеют очень ограниченный размер, например. mssql имеет ограничение в 900 байт
  • Многие индексы могут вызывать накладные расходы при записи (хотя в прошлый раз я тестировал вставку миллиона записей в таблицу с 9 индексами
  • Многие индексы занимают драгоценное место в БД
  • многие индексы могут создавать взаимоблокировки при вставке данных

Также ознакомьтесь с документацией по используемой вами базе данных. В большинстве баз данных есть поддержка текстовых столбцов с эффективным поиском в них

0 голосов
/ 29 марта 2011

Как правило, рекомендуется создавать индексы для полей, которые вы будете использовать для поиска. Но, в зависимости от использования, есть лучшие варианты:

  • Полнотекстовый поиск (из wikipedia ). При полнотекстовом поиске поисковая система проверяет все слова в каждом сохраненном документе, пытаясь сопоставить поисковые слова, предоставленные пользователем.
  • Частичный индекс: (опять же, из wikipedia ): В базах данных частичный индекс, также известный как отфильтрованный индекс, является индексом, к которому применено некоторое условие, так что он включает подмножество строк в стол.

Возможно, вам следует рассмотреть возможность предоставления дополнительной информации об использовании индекса.

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