是否可以合并这些非聚集索引以减少空间?
问题描述:
仍在学习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)
答
删除所有,但最后一个索引SomeIndex3
前两个指标是完全多余的。另外,如果表格中没有聚簇索引,并且没有理由不带一个聚簇索引,那么创建一个与SomeIndex3
具有相同索引的聚簇索引,并删除SomeIndex3
。
+1
我不会那么快知道关于聚类密钥的建议,而不知道更多。集群密钥的一个很好的候选人是狭隘的,独特的,而且越来越多。我们对(a,b,c)的属性不了解任何这些属性是否适用。 –
如果您的* only *目标是减少空间使用量,只需删除所有索引。 –
'SomeIndex3'实际上应该能够很好地处理所有显示的三个示例查询 - 其他两个索引实际上并没有多大好处 - 如果您真的想减少索引的数量,则放弃'SomeIndex1'和'SomeIndex2 ' –