解析SQL Server聚焦移除(Bookmark Lookup、RID Lookup、Key Lookup)
标签查找和键查找是一个意思,在SQL 2005之前叫Key Lookup。对于以上场景描述,如果表没有创建聚集索引则称为Bookmar Lookup,如果表中没有聚集索引但是存在非聚集索引我们称为RID Lookup。这种行为就叫做Bookmark Lookup或者Key Lookup。我们对查询条件以及检索列创建非聚集索引。此时我们对检索列创建了非聚集索引,此时将不会再到数据页中获取数据,而是从索引中直接返回,所以到这里我们算是移除了Key Lookup。到这里算是基本结束了,但是还有一个小问题,我们在之前已经创建了orderid的聚集索引,后面在解决方案中我们也添加了orderid的非聚集索引,难道非得添加吗,我们去掉试试看。去除orderid比较二者开销差异:由上知,非聚集索引列不需要包含创建了聚集索引的列,那么事实到底是怎样的呢?
用户评论