【发布时间】:2016-04-04 03:03:51
【问题描述】:
仍在学习 SQL Server 2008 R2 中的索引。
我在一张表上有三个索引,大约有 1000 万行数据我想知道是否可以合并索引以减少空间,因为它们每个需要几个 gig。
查询:
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实际上应该能够很好地处理所有三个示例查询 - 其他两个索引并没有太大的好处 - 如果你真的想减少索引的数量,那么删除SomeIndex1和SomeIndex2
标签: sql-server indexing sql-server-2008-r2