|
Полнотекстовый индекс SQL Server на самом деле больше похож на каталог, чем на индекс, и он имеет структуру, отличную от B-дерева. Полнотекстовый индекс позволяет выполнять поиск по группам ключевых слов. Полнотекстовый индекс является частью службы Microsoft Search; он широко используется в механизмах поиска Wеb-узлов и других текстовых операциях.
Создание индекса.
После ознакомления с физической структурой индексов, рассмотрим более подробно параметры оператора создания индекса.
Оператор имеет вид:
CREATE [ UNIQUE ] [ CLUSTERED | NONCLUSTERED ]
INDEX имя_индекса ON имя_таблицы (имя_столбца
[ASC|DESC][,...n])
[ INCLUDE ( column_name [,... n ] ) ]
[WITH [PAD_INDEX]
[[,] FILLFACTOR= фактор_заполнения ]
[[,] IGNORE_DUP_KEY]
[[,] DROP_EXISTING]
[[,] STATISTICS_NORECOMPUTE] ]
[ON имя_группы_файлов ]
Имя индекса должно быть уникальным в пределах таблицы, а сам индекс создается исключительно для таблицы текущей базы данных.
ПараметрUNIQUEиспользуется при необходимости ввода в определенное поле только уникальных значений. При указании этого ключевого слова будет создан уникальный индекс. В индексируемом столбце желательно запретить хранение значений NULL, чтобы избежать проблем, связанных с уникальностью значений. После того как для столбца появится уникальный индекс, сервер не разрешит выполнение команд INSERT и UPDATE, которые приведут к появлению дублирующих значений.
Параметр CLUSTERED позволяет создавать кластерные индексы. Использует возможность физического индексирования данных и позволяет произвести так называемое кластерное индексирование, в результате чего будут отсортированы данные в самой таблице согласно порядку этого индекса, а вся добавляемая информация станет приводить к изменению физического порядка данных. Кластерным может быть только один индекс в таблице.
Каждый кластеризованный индекс также является уникальным по умолчанию, т. е. каждое значение данных может появиться только один раз в столбце, для которого определен кластеризованный индекс. Если кластеризованный индекс создан для неуникального столбца, система будет форсировать уникальность, добавляя четырехбайтовый идентификатор к строке, которая имеет дубликаты значений.
Кластеризованные индексы позволяют сильно ускорить доступ в случае, когда запрос осуществляет поиск в диапазоне значений.
Параметр NONCLUSTERED позволяет создавать некластерные индексы (значение по умолчанию).
Параметр include позволяет задавать неключевые, столбцы, которые добавляются в страницы листьев некластеризованного индекса. Имена столбцов не могут повторяться в списке include и не могут быть одновременно использованы в качестве ключевых и неключевых столбцов.
Опции include используется для создания покрывающего индекса. Существенное повышение производительности может быть достигнуто, когда все столбцы в запросе включены в индекс, потому что оптимизатор запросов может локализовать все значения столбцов в индексных страницах без необходимости доступа к данным таблицы. Эта возможность называется покрывающим индексом или покрывающим запросом.
Следовательно, если включить дополнительные неключевые столбцы в страницы листьев некластеризованного индекса, может быть покрыто большее количество запросов, а их производительность может быть значительно более высокой.
Параметр FILLFACTOR =n (WITH FILLFACTOR=фактор_заполнения) осуществляет настройку разбиения индекса на страницы и заметно оптимизирует работу SQL-сервера. Коэффициент FILLFACTOR определяет в процентном соотношении размер создаваемых индексных страниц. При этом имеется обратно пропорциональная зависимость частоты работы с таблицей и коэффициента FILLFACTOR.
При создании или перестроении индекса коэффициент заполнения отображает процент заполнения пространства каждой страницы конечного уровня, что позволяет зарезервировать пространство, необходимое для будущего расширения.
Опция FILLFACTOR =n определяет процент заполнения каждой индексной страницы во время создания индекса. Можно задать значение FILLFACTOR в диапазоне от 1 до 100. Значения коэффициента заполнения 0 и 100 равнозначны.
Если значение n установлено в 100, то каждая индексная страница будет заполнена на 100%, т.е. существующая страница индекса так же, как и страница, не относящаяся к листу, не будет иметь для добавления новых строк. По этой причине такое значение рекомендуется использовать только для статических таблиц.
Дата добавления: 2015-08-05; просмотров: 64 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Если существует кластеризованный индекс, то закладка некластеризованного индекса указывает на структуру В-дерева кластеризованного индекса таблицы. | | | Значение по умолчанию 0 также указывает на то, что страница листа индекса будет заполнена полностью и каждая промежуточная страница содержит место для одной записи. |