现有条目是否立即包含在新创建的索引中?

sha*_*oth 5 performance index sql-server-2008 sql-server

假设我有一个Stuff包含一列的表,但City没有包含该列的索引。我填充表格。然后我决定创建一个索引:

CREATE INDEX [StuffOnCityIndex] ON [dbo].[Stuff](City ASC);
Run Code Online (Sandbox Code Playgroud)

并且数据库确认CREATE INDEX成功。

新创建的索引会立即包含表中的所有现有条目还是会在“后台”缓慢构建?换句话说,如果我认为创建索引会提高性能,那么我会在CREATE INDEX完成后立即看到这种改进吗?

gbn*_*gbn 6

CREATE INDEX 是遵循ACID的工作单元。

所以当它完成时,它已经完全完成(或失败)(ACID 中的“Atomic”)。不需要进一步的工作来填充或以其他方式准备索引(ACID 中的“一致”)

它是否提高性能取决于它是否适合您正在运行的查询、数据分布等。这是一个全新的领域......