SQL语句优化分享——索引.ppt

为什麽非聚集索引才会出现书签查找??? 大家可以再看一下非聚集索引的结构图和MSDN的定义 MSDN定义:当查询优化器使用非聚集索引进行查找时,如果所选择的列或查询条件中的列只部分包含在使用的非聚集索引和聚集索引中时,就需要一个查找(lookup)来检索其他字段来满足请求。对一个有聚簇索引的表来说是一个键查找(key lookup),对一个堆表来说是一个RID查找(RID lookup),这种查找即是——书签查找(bookmark lookup)。简单的说就是当你使用的sql查询条件和select返回的列没有完全包含在索引列中时就会发生书签查找 因为无论是(1)只有非聚集索引的表 还是(2)聚集索引和非聚集索引并存的表 数据页都不是非聚集索引的一部分 所以如果所查找的数据不在非聚集索引的索引页就需要到数据页去取数据,这种情况就叫“书签查找” 其实数据表里的数据就像书本里的内容,而非聚集索引就像书签,因为书本里的内容不可能全部在书签里,但是要找到书本里的内容需要书签去定位 * * * * * 大家可以看到执行计划里面索引扫描的开销是94% ,键查找的开销是0% 因为SQLSERVER要扫描每一个非聚集索引页,当找到GroupName=销售组168的那条记录的时候,自然就知道DepartmentID的值 然后根据[DepartmentID]的值去聚集索引页里找记录,但是聚集索引页

文档评论(0)

1亿VIP精品文档

相关文档