SQL Server里书签查找的性能伤害
对于从非聚集索引你返回的每一行,SQL Server需要在聚集索引里或堆表里进行额外的查找操作。为了演示这个性能问题,接下来的查询我指定查询优化器使用特定的非聚集索引。执行计划看起来非常恐怖(查询优化器甚至启用了并行计划!在此期间,CPU占用很高,因为SQL Server需要嵌套循环运算符来进行书签查找操作。现在让我们修改索引设计,为这个查询创建覆盖非聚集索引。一个非聚集索引查找就可以返回同样的结果:这次当我们再次用ostress.exe执行同个查询,我们看到每个查询在5秒内完成。这就是覆盖非聚集索引的威力:在我们查询里气门请求的数据都可以在非聚集索引里直接找到,因此书签查找就可以避免。
用户评论