【问题标题】:SQL Server: multi-column index [duplicate]SQL Server:多列索引[重复]
【发布时间】:2012-06-11 15:19:54
【问题描述】:

可能重复:
Difference of create Index by using include column or not using

编辑:忽略此帖子,我将其标记为模组,因为它是重复的。感谢大家的回复!

创建多列索引,这两者有什么区别:

CREATE INDEX MyIndex ON TABLE1 (COLUMN1 ASC, COLUMN2 ASC, COLUMN3 ASC, [etc...])

对比

CREATE INDEX MyIndex ON TABLE1 (COLUMN1 ASC)
INCLUDE (COLUMN2, COLUMN3, [etc...] )

MSDN 说后者意味着包括非键列。通俗地说,这意味着什么?重点是,我基本上要处理这样一种情况,即我必须优化查询,这些查询只需要表中几十列中的 3-5 列的数据,可以说使用其中一列作为“基础”索引并获取同一行的其他列值。

在一个表上创建聚集索引不是一种选择,因为表会定期更新,这往往会创建大量锁和等待。我目前正在测试这些,但我也想从你们那里得到一个明智的答案。 :)

【问题讨论】:

  • 这个问题可能更适合dba.stackexchange.com
  • 嗯,它是重复的,谢谢。该页面正是我正在寻找的那种答案。

标签: sql-server indexing


【解决方案1】:

这意味着索引不是基于 INCLUDE 子句中的列,这意味着当 INCLUDE 子句中的列被更新时,索引中的相应行不必移动。详细信息,包括使用场景,见this

【讨论】:

  • 谢谢马丁,我的措辞不准确 - 我已经修正了
猜你喜欢
  • 1970-01-01
  • 2012-07-31
  • 1970-01-01
  • 1970-01-01
  • 2018-11-05
  • 2010-12-29
  • 1970-01-01
  • 2011-01-25
  • 2023-03-04
相关资源
最近更新 更多