2015-12-30 38 views
0

仍在学习SQL Server 2008 R2中的索引。是否可以合并这些非聚集索引以减少空间?

我在一张桌子上有三个索引,并且大约有1000万行数据我想知道如果我可以合并索引以减少空间,因为它们每个都需要几个演出。

查询:

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

如果您的* only *目标是减少空间使用量,只需删除所有索引。 –

+2

'SomeIndex3'实际上应该能够很好地处理所有显示的三个示例查询 - 其他两个索引实际上并没有多大好处 - 如果您真的想减少索引的数量,则放弃'SomeIndex1'和'SomeIndex2 ' –

回答

1

删除所有,但最后一个索引SomeIndex3

前两个指标是完全多余的。另外,如果表格中没有聚簇索引,并且没有理由不带一个聚簇索引,那么创建一个与SomeIndex3具有相同索引的聚簇索引,并删除SomeIndex3

+1

我不会那么快知道关于聚类密钥的建议,而不知道更多。集群密钥的一个很好的候选人是狭隘的,独特的,而且越来越多。我们对(a,b,c)的属性不了解任何这些属性是否适用。 –

相关问题