ORDER BY page_count desc, indexstats.avg_fragmentation_in_percent desc要在表上创建聚集索引并删除它--这将清除所有碎片,并重建所有非聚集索引,但这将是时间和I/O消耗。重新构建堆-这也将清除碎片,并重建表重建的所有非聚集索引部分。
我不能选择选项1,因为我不知道可
我使用INSERT INTO tblUploadBanking SELECT FROM ...将一批行插入到表中,该表是一个堆,具有3个狭窄的NC索引。到目前为止,我发现的唯一一件事是存在与堆和索引碎片的连接。当我重新构建堆时,执行计划完全相同--包括成本分布、行估计等。这些查询也被插入到碎片堆中,并重新构建堆“解决了它”,就像在本例中一样。
根据我对堆的了解,当堆被分割时,不应该有任何慢插入的理由。这可能是因为NC索引支离破碎,但我
据我所知,堆是无序的对象。插入记录时,Server使用IAM页获取属于此堆的页,并使用PFS页查找有足够空间容纳该记录并插入到其中的特定页。当您在它上创建聚集索引时,它变成一个聚集表,而聚集索引本身成为表。但是,由于聚集索引和原始堆是两个不同的结构,Server是否创建了一个新结构(聚集索引)并将所有内容从帮助转移到新结构,然后删除堆?有很多东西可以在表上定义,比如触发器、约束、权限等等。如果我的假设是正确的,那就意味着SQL Ser