【问题标题】:Can I create indexes on multiple columns in SQL Server 2012?我可以在 SQL Server 2012 中的多个列上创建索引吗?
【发布时间】:2015-01-03 22:33:46
【问题描述】:

听说索引很好,我可以在多列上创建聚集索引,还是在 SQL Server 2012 中只在一列上创建聚集索引?

提前致谢

【问题讨论】:

  • 默认情况下 PK 在表上创建集群索引,因此每个表只能有一个集群索引
  • 您可以在聚簇索引和非聚簇索引(任何版本)中的多个列上创建索引。
  • Ganesh_Devlekar 是的,你说得对。但我的问题是我可以创建具有多个列的 culterindex,就像复合主键一样
  • @PPRas'd 你可以,它会创建复合主键,它不会在多列上创建聚集索引
  • 可以做到 - 但你是否应该做到是另一个问题。如果聚集索引窄、唯一、稳定并且最好还不断增加(想想:INT IDENTITY),则它的效果最好。聚集索引条目也被添加到该表上曾经单个的非聚集索引中 - 因此,拥有包含大量列的大而宽的聚集索引通常不是一个好主意

标签: sql sql-server sql-server-2012


【解决方案1】:

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

【讨论】:

    【解决方案2】:

    您可以创建一个复合聚集索引,该索引将在您的索引中包含多个列。但是,它会影响您的插入/更新性能。

    一个简单的聚集索引就像

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-12-04
      • 2010-11-23
      • 1970-01-01
      • 2015-04-04
      • 1970-01-01
      • 2012-12-11
      • 2015-11-17
      • 2014-02-23
      相关资源
      最近更新 更多