2015-12-30 1 views
0

Изучение индексов в SQL Server 2008 R2.Можно ли объединить эти некрупные индексы для сокращения пространства?

У меня есть три индекса на одной таблице, и есть около 10 миллионов строк данных, которые я хочу знать, могу ли я объединить индексы, чтобы уменьшить пространство, поскольку они занимают несколько концертов каждый.

запросов:

Select * 
From dbo.Table1 
Where ColumnA in ('1') 

Select * 
From dbo.Table1 
Where ColumnA in ('1') 
    And ColumnB in ('2') 

Select * 
From dbo.Table1 
Where ColumnA in ('1') 
    And ColumnB in ('2') 
    And ColumnC in ('3') 

Индексы:

Create Nonclustered Index [SomeIndex1] 
on dbo.Table1 (ColumnA Asc) 
Include(ColumnB, ColumnC, ColumnD) 

Create Nonclustered Index [SomeIndex2] 
on dbo.Table1(ColumnA Asc, ColumnB Asc) 
Include (ColumnC, ColumnD) 

Create Nonclustered Index [SomeIndex3] 
on dbo.Table1(ColumnA Asc, ColumnB Asc, ColumnC Asc) 
Include (ColumnD) 
+0

Если ваша цель * только * состоит в сокращении использования пространства, просто удалите все индексы. –

+2

'SomeIndex3' на самом деле может обрабатывать все три примера запросов, показанных довольно красиво - два других индекса действительно не имеют большой пользы - если вы действительно хотите уменьшить количество индексов, а затем отпустите« SomeIndex1 »и« SomeIndex2 » ' –

ответ

1

Удалить все, кроме последнего индекса SomeIndex3

Первые два показателя являются полностью избыточными. Кроме того, если у вас еще нет кластерного индекса в таблице, и нет причин оставлять его без него, тогда создайте кластерный индекс с тем же индексом, что и SomeIndex3, и оставьте SomeIndex3.

+1

Я бы не стал так быстро советоваться с ключом кластеризации, не зная большего. Хороший кандидат на ключ кластеризации является узким, уникальным и постоянно растет. Мы ничего не знаем о свойствах (a, b, c), чтобы сказать, применяется ли какое-либо из них. –

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