Sql-Server
CREATE INDEX 的 DROP_EXISTING 和 ONLINE 順序
如果我使用 DROP_EXISTING = ON 和 ONLINE = ON 呼叫 CREATE NONCLUSTERED INDEX,那麼事情的執行順序是什麼?
我想要的是:
- 在 TempDB 中創建新索引
- 現有索引已刪除
- 新的索引被放置在它的位置。
但我擔心它是這樣的:
- 現有索引已刪除
- 在 TempDB 中創建新索引
- 新的索引被放置在它的位置。
基本上我想知道在製作新索引時舊索引是否消失了? (我希望它在那裡限制我在沒有任何索引的情況下執行的時間。)
如果時間較長,那麼我將創建一個具有不同名稱的新索引,然後刪除現有索引。
舊索引保留在原地,由查詢維護和使用。只有在索引建構結束時,SQL Server 才會以舊索引消失並設置新索引的方式更改元數據。
沒有一個毫秒沒有索引。(但在線上建構期間有兩次短暫的 Sch-M 鎖。)