【问题标题】:Way to disable clustered index in SQL and which column does default non clustered index gets created?在 SQL 中禁用聚集索引的方法以及创建默认非聚集索引的列?
【发布时间】:2013-03-01 21:24:40
【问题描述】:

有没有办法禁用聚集索引?正如我在下面的 MSDN 中看到的那样,它说“如果未指定 CLUSTERED,则创建非聚集索引。”

参考:http://msdn.microsoft.com/en-IN/library/ms188783.aspx

因为我读到,默认情况下会在主键列中创建聚集索引。即使通过某种方式禁用它,根据上面的 MSDN,默认情况下会创建一个非聚集索引?如果有,是哪一栏?

我是 SQL 新手,请帮忙。

【问题讨论】:

  • 我认为上述帮助的意思是,如果您不在 CREATE INDEX DDL 中编写 CLUSTERED 关键字,那么它将默认创建非聚集索引。
  • @JackLock:这是可能的,谢谢 :)
  • 没问题。我知道,BOL 有时可能会有点混乱。
  • @JackLock: :) 是的。大多数时候,我觉得它令人困惑。我刚刚在 MSDN 中发现的另一个令人困惑的事情/错误是 stackoverflow.com/questions/15166776/… 当然,我们对那时的信任失去了兴趣。我之前也发现了这样的观察结果,这些观察结果已传达给 MS MSDN 作者。我希望它能做得更好。我是初学者,像我这样的人肯定会失望。

标签: sql sql-server sql-server-2008


【解决方案1】:

您可以禁用聚集索引。

ALTER INDEX IX_Index ON dbo.Table
DISABLE ;

http://technet.microsoft.com/en-us/library/ms188388.aspx

【讨论】:

  • 谢谢。所以如果我禁用它,根据 MSDN,将创建一个非聚集索引?
  • 我认为你误读了。就像上面@JackLock 说的,如果你创建一个索引,没有 CLUSTERED 语句,那么这个索引是非聚集的。
  • 技术上正确,但可能不是一个好主意。 CREATE TABLE T(X INT CONSTRAINT IX_Index PRIMARY KEY);ALTER INDEX IX_Index ON T DISABLE;SELECT * FROM T 产生 The query processor is unable to produce a plan because the index 'IX_Index' on table or view 'T' is disabled.
  • @MartinSmith:谢谢 :)
猜你喜欢
  • 2021-01-14
  • 2013-05-20
  • 2018-05-08
  • 2017-05-08
  • 2013-08-07
  • 2020-08-04
  • 1970-01-01
  • 2012-08-26
相关资源
最近更新 更多