Какие индексы мне нужно будет сделать для этой таблицы SQL Server? - PullRequest
0 голосов
/ 08 октября 2010

У меня есть следующий sql запрос для базы данных SQL Server 2008.

SELECT TOP(@NumberOfStreetResults) LocationType, LocationId, Name
FROM [dbo].[LocationNames] 
WHERE CONTAINS(Name, @SearchQuery)
    AND LocationType = 7

Обратите внимание, как я использую ключевое слово CONTAINS? У меня есть FTS в поле Name.

Я не уверен, какие индексы мне нужно добавить в таблицу вручную, потому что этот запрос очень распространен в нашей системе.

Нужно ли просто добавить индекс против LocationType?

Обновление

Вот графики запросов ...

alt text

alt text

Ответы [ 2 ]

0 голосов
/ 08 октября 2010

Если ваш LocationType очень избирателен, то я предлагаю создать покрытый индекс для этой таблицы с ключом LocationType и добавить LocationId в список включаемых столбцов

0 голосов
/ 08 октября 2010

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

A) Преимущества:

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

B) Недостатки:

1) Замедление CRUD (Создать,Чтение, обновление, удаление), поскольку при необходимости следует выполнять те же действия с временными таблицами.

2) Размер базы данных увеличивается из-за использования временных таблиц.

Заключение:

Использование индексации для полей, которые вы часто называете их критериями поиска (ГДЕ)

...