我想知道,当我使用:
select *
from table_name
where Id = 2013
SQL Server 2008 在内部使用什么样的搜索来获取行?
我想知道,当我使用:
select *
from table_name
where Id = 2013
SQL Server 2008 在内部使用什么样的搜索来获取行?
这取决于是否Id
被索引以及索引是否包含(覆盖)所有列。
通常称为id
主键的列和(默认情况下)聚集索引键。如果您是这种情况,那么您很可能会获得聚集索引搜索。
SQL Server 索引是B+ 树。
SQL Server 将从索引根页开始,并沿着它向下找到该行。在这种情况下读取的页数将是索引的深度。
如果不存在合适的索引,则 SQL Server 将需要读取表中的每一页。
最后还有一种可能是id
被索引了,但是索引并没有覆盖表中的所有列。在这种情况下,您可能会看到一个带有索引查找的计划,然后是书签/键查找以检索您的SELECT *
.