是否有可能一個聚集索引轉換爲非聚集索引或 非聚集索引聚集索引在SQL Server 2005將聚集索引轉換爲非聚集索引?
請轉換此查詢到聚集索引:
create index index1 on mytable(firstcolumn)
請轉換此查詢轉化爲非聚集索引:
create clustered index clusindex1 on mytable(cluscolumn)
是否有可能一個聚集索引轉換爲非聚集索引或 非聚集索引聚集索引在SQL Server 2005將聚集索引轉換爲非聚集索引?
請轉換此查詢到聚集索引:
create index index1 on mytable(firstcolumn)
請轉換此查詢轉化爲非聚集索引:
create clustered index clusindex1 on mytable(cluscolumn)
那些不是查詢;他們是DDL命令。 掉落並根據需要,像這樣重新創建索引:
drop index mytable.index1
go
create nonclustered index index1 on mytable (firstcolumn asc)
go
還有更多的它比滿足眼睛
創建聚簇索引
drop index mytable.clusindex1
go
create clustered index clusindex1 on mytable(cluscolumn)
創建非聚集索引
drop index mytable.clusindex1
go
create index clusindex1 on mytable(cluscolumn) --non clustered is default
說了這麼多,你每個表只能有一個聚簇索引,所以如果您嘗試刪除索引並將其重新創建爲聚簇索引,則如果您已有聚簇索引,則該索引將失敗。每當您刪除聚簇索引時,所有非聚簇索引也將被刪除並重新創建指向堆,然後在創建聚簇索引時再次刪除並重新創建,現在指向聚簇索引(查找WITH DROP_EXISTING子句)
我會說,查找如何索引在Books On Line中工作,然後再開始刪除和重新創建索引
我還想知道聚集索引是否可以轉換(更改)爲非聚集索引。我不相信這是可以做到的。必須首先刪除現有的聚簇索引,然後才能創建新的非聚簇索引(可能與聚簇索引具有相同的名稱)。將非聚集索引轉換爲聚集索引也是如此。
我不知道你爲什麼要求'查詢'被轉換,但@Tahbaza是正確的,因爲你包含在你的問題中的代碼不是真正的查詢。它們是用於更改「數據定義」(即數據庫的架構[結構])的T-SQL語句。
如果您添加一個包含所有列的索引(無論是在索引中還是作爲包含列),這與第二個聚簇索引基本相同 – Andomar 2010-08-29 18:03:50
如果表的寬度超過900個字節或者如果您有您的表格中有16列以上 – SQLMenace 2010-08-29 18:20:00
您可以有多達1023個包含任意寬度AFAIK的列。 – 2010-08-29 18:33:02