Sql-Server
現有條目是否立即包含在新創建的索引中?
假設我有一個
Stuff
包含一列的表,City
並且沒有包含該列的索引。我填充表格。然後我決定創建一個索引:CREATE INDEX [StuffOnCityIndex] ON [dbo].[Stuff](City ASC);
並且數據庫確認
CREATE INDEX
成功。新創建的索引會立即包含表中的所有現有條目,還是會“在後台”慢慢建構?換句話說,如果我認為創建索引會提高性能,那麼我會在
CREATE INDEX
完成後立即看到這種改進嗎?
CREATE INDEX 是緊隨ACID的工作單元。
因此,當它完成時,它已經完全完成(或失敗)(ACID 中的“原子”)。無需進一步的工作來填充或以其他方式準備索引(ACID 中的“一致”)
它是否能提高性能取決於它是否適合您正在執行的查詢、數據分佈等。這是一個全新的領域……
索引將在完成後立即完全建構
CREATE INDEX
。只有當您的 SQL 語句可以使用新創建的索引時,您才會看到性能提升。
您將需要查看執行計劃以了解是否使用了索引。