2

我想知道,当我使用:

select *
from table_name
where Id = 2013

SQL Server 2008 在内部使用什么样的搜索来获取行?

4

1 回答 1

5

这取决于是否Id被索引以及索引是否包含(覆盖)所有列。

通常称为id主键的列和(默认情况下)聚集索引键。如果您是这种情况,那么您很可能会获得聚集索引搜索。

SQL Server 索引是B+ 树

B树

SQL Server 将从索引根页开始,并沿着它向下找到该行。在这种情况下读取的页数将是索引的深度。

如果不存在合适的索引,则 SQL Server 将需要读取表中的每一页。

最后还有一种可能是id被索引了,但是索引并没有覆盖表中的所有列。在这种情况下,您可能会看到一个带有索引查找的计划,然后是书签/键查找以检索您的SELECT *.

于 2013-04-14T07:12:47.270 回答