2009-05-06 1 views
1

У меня есть отчет, который требуется много времени для выполнения. Я запустил советник по настройке ядра базы данных, и одна из рекомендаций заключалась в том, чтобы создать 2 индекса. Однако я заметил, что индексы были одинаковыми столбцами, но в разных порядках.SQL Server 2005 индексирование одних и тех же столбцов в другом порядке

Вот таблица:

---Locations--- 
| *LocationID | 
| Code  | 
| ...more... | 
| DivisionID | 
| RegionID | 
--------------- 

и рекомендация, чтобы добавить эти 2 индексы

CREATE NONCLUSTERED INDEX [IX_Locations_Region_Loc_Div] ON [dbo].[Locations] 
(
    [RegionID] ASC, 
    [LocationID] ASC, 
    [DivisionID] ASC 
) 
INCLUDE ([Code]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY] 
GO 

CREATE NONCLUSTERED INDEX [IX_Locations_Loc_Reg_Div] ON [dbo].[Locations] 
(
    [LocationID] ASC, 
    [RegionID] ASC, 
    [DivisionID] ASC 
) 
INCLUDE ([Code]) WITH (SORT_IN_TEMPDB = OFF, IGNORE_DUP_KEY = OFF, DROP_EXISTING = OFF, ONLINE = OFF) ON [PRIMARY] 
GO 

Почему бы нуждаться в SQL Server, чтобы эти 3 столбцов индексов в различных порядках, когда они используется только для внутреннего соединения?

ответ

2

Это не относится к SQL, который вы включили. Должны быть другие вопросы, которые он рассматривает, чтобы сделать эту рекомендацию.

0

Был ли пункт where в заявлении, когда вы запускали двигатель настройки? Я бы также поставил предложение order by в заявлении и посмотрел, помогает ли это тому, чтобы механизм базы данных/настройки знал, как наилучшим образом выровнять индекс.

0

Один из способов ответа на ваш вопрос - посмотреть план выполнения в Sql Server Management Studio запроса перед добавлением индексов, а затем после индексов. Всегда интересная, если не полезная информация.

0

Я не уверен в 2005 году, но я знаю, что (по крайней мере некоторые) предыдущие версии SQL Server могли бы получить только индекс для использования, если столбцы в предложении where были в том же порядке, что и столбцы в индекс. Не нравится, но доказывал это.

Я просто заметил, что вы говорите о соединениях - тогда я в основном писал свои соединения в предложении where вместо использования синтаксиса ANSI, поэтому, я думаю, он все еще применяется.

Смежные вопросы