Sql-Server

CREATE INDEX 的 DROP_EXISTING 和 ONLINE 順序

  • June 18, 2015

如果我使用 DROP_EXISTING = ON 和 ONLINE = ON 呼叫 CREATE NONCLUSTERED INDEX,那麼事情的執行順序是什麼?

我想要的是:

  • 在 TempDB 中創建新索引
  • 現有索引已刪除
  • 新的索引被放置在它的位置。

但我擔心它是這樣的:

  • 現有索引已刪除
  • 在 TempDB 中創建新索引
  • 新的索引被放置在它的位置。

基本上我想知道在製作新索引時舊索引是否消失了? (我希望它在那裡限制我在沒有任何索引的情況下執行的時間。)

如果時間較長,那麼我將創建一個具有不同名稱的新索引,然後刪除現有索引。

舊索引保留在原地,由查詢維護和使用。只有在索引建構結束時,SQL Server 才會以舊索引消失並設置新索引的方式更改元數據。

沒有一個毫秒沒有索引。(但在線上建構期間有兩次短暫的 Sch-M 鎖。)

引用自:https://dba.stackexchange.com/questions/104518