我认为非聚集/逻辑索引只包含指向实际记录的指针。
我在主键(id)上有一个聚集索引的表,一个日期时间和一个varchar(还有一些我没有编入索引的其他列)。
我使用了命令:
CREATE INDEX Index_CreatedDesc_AccountAsc ON MyTable (Created desc, Account asc)
该表有5亿条记录。我在创建索引时实时观察Azure数据库指标(到目前为止,它已经运行了大约1小时30分钟)。
它起始于111GB,现在该表的大小已增加到120GB。如果它只需要创建指向物理记录/数据页的指针,它为什么占用这么多空间?
答案 0 :(得分:1)
这不仅仅是指针。实际上,Azure SQL数据库和SQL Server正在创建一个平衡的树或b树(更确切地说是一个B-Plus树),如SQL Server Internals书中所述。 B树开始小而且完美地形成并且很好地生长到巨大的尺寸。如果您不定期对它们进行碎片整理,则可能会出现碎片并消耗更多空间,如here所述。