Какой столбец таблицы индексировать? - PullRequest
2 голосов
/ 07 февраля 2011

У меня есть таблица, в которой есть столбцы A, B, C, D.

У меня есть приложение, которое ищет слово во ВСЕХ столбцах таблицы.

Если я хочу проиндексировать таблицу, чтобы поиск происходил быстрее, какой столбец мне следует проиндексировать?

Как будет выглядеть команда index?

EDIT: На самом деле у меня есть 27 столбцов языков (например, английский, немецкий и т. Д.). У меня есть приложение, которое ищет слово на всех языках и возвращает результат.

Как индексировать эту таблицу, чтобы обеспечить более быстрый результат поиска?

Ответы [ 4 ]

3 голосов
/ 07 февраля 2011

Вам нужен полнотекстовый индекс по всем столбцам.

К сожалению, SQLite по умолчанию не поддерживает полнотекстовые индексы.Вы должны скомпилировать его с включенной опцией поддержки полнотекстового индекса.

Бесполезно просто указать на документы для полнотекстового индексирования SQLite, вот они:

0 голосов
/ 07 февраля 2011

Обратите внимание на следующие ссылки:

Настройка производительности SQL с использованием индексов и Планировщик запросов SQLite

и, в частности, раздел Построение лучшего индекса в 1-й ссылке

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

0 голосов
/ 07 февраля 2011

У вас есть только эти столбцы?насколько велика ваша база данных?как часто ваши данные обновляются.Какие типы запросов вы выполняете (в основном, запросы).Какой у вас движок базы данных?

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

0 голосов
/ 07 февраля 2011

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

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