索引重建是否会减少从磁盘的物理读取

SQL*_*ert 3 sql-server clustered-index disk-structures index-tuning ola-hallengren

最近,我使用 Ola Hallengreen 脚本重建了 99% 碎片化的索引。重建后,我注意到物理读取减少了很多。这与 Index Rebuilt 有什么关系吗?

Bre*_*zar 5

重建索引后,它的页面更有可能被缓存在内存中。

考虑这个场景:

  1. 您的服务器正在运行各种各样的查询,并且在内存中缓存了各种各样的表
  2. 您运行一个查询特定表 - 例如,表中的 COUNT(*) - 并且它的所有页面都没有缓存在内存中。您的查询执行大量物理读取以将该数据放入缓存中。
  3. 你重建它的索引。
  4. 您再次运行查询——但这一次,它的页面现在缓存在内存中。您会看到该查询的物理读取较少。

这是您不想使用物理读取来衡量性能调整工作是否成功的原因之一。首先使用逻辑读取。(哎呀,您可以完全跳过第 3 步,仍然会看到较少的物理读取 - 但这并不意味着您应该将每个查询运行两次以减少物理读取。)