在SQL Server 2012中,我可以在多个列上创建索引吗?

4

我听说索引很好用,那么在SQL Server 2012上,我能不能创建一个跨多个列的聚集索引,或者聚集索引只能在一个列上创建?

提前感谢。


默认情况下,PK在表上创建集群索引,因此每个表只能有一个集群索引。 - Dgan
您可以在聚集索引和非聚集索引中的多个列上创建索引(在任何版本中)。 - knkarthick24
Ganesh_Devlekar,是的,你说得对。但我的问题是,我能否创建一个包含多个列的culterindex,就像复合主键一样? - PPRas'd
@PPRas'd,如果您这样做,它将创建复合主键,但不会在多个列上创建聚集索引。 - Dgan
6
你“可以”做到这一点 - 但你是否“应该”这样做是另一个问题。聚集索引在以下情况下运作最佳:狭窄、唯一、稳定,最好还是递增的(比如 INT IDENTITY)。聚集索引条目也会添加到表上的每个非聚集索引中 - 因此,拥有许多列的大型、宽广的聚集索引通常不是一个好主意 - marc_s
是的,谢谢大家 :) - PPRas'd
2个回答

0
您可以创建一个复合聚集索引,该索引将包括多列。但是,它会影响您的插入/更新性能。
一个简单的聚集索引将像这样
PRIMARY KEY CLUSTERED ([Col1] ASC, [Col2] ASC, [COL3] ASC)

这意味着,你的数据行存储方式类似于-

Col1    Col2     Col3
1        1        1
1        1        2
1        2        3
2        5        2
2        6        5
3        2        1
3        5        2

0

组合索引:您可以在多个列上创建索引,但最多可以将16个列合并为单个组合索引键。 组合索引键中的所有列必须在同一个表或视图中。 组合索引值的最大允许大小为900字节。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接