Sql-Server

現有條目是否立即包含在新創建的索引中?

  • April 26, 2012

假設我有一個Stuff包含一列的表,City並且沒有包含該列的索引。我填充表格。然後我決定創建一個索引:

CREATE INDEX [StuffOnCityIndex] ON [dbo].[Stuff](City ASC);

並且數據庫確認CREATE INDEX成功。

新創建的索引會立即包含表中的所有現有條目,還是會“在後台”慢慢建構?換句話說,如果我認為創建索引會提高性能,那麼我會在CREATE INDEX完成後立即看到這種改進嗎?

CREATE INDEX 是緊隨ACID的工作單元。

因此,當它完成時,它已經完全完成(或失敗)(ACID 中的“原子”)。無需進一步的工作來填充或以其他方式準備索引(ACID 中的“一致”)

它是否能提高性能取決於它是否適合您正在執行的查詢、數據分佈等。這是一個全新的領域……

索引將在完成後立即完全建構CREATE INDEX

只有當您的 SQL 語句可以使用新創建的索引時,您才會看到性能提升。

您將需要查看執行計劃以了解是否使用了索引。

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