SQL Server中的逻辑读取数

时间:2016-11-18 11:26:12

标签: sql-server logical-reads

我正在尝试了解sql server如何工作访问数据 对于非常简单的查询,我能够精确计算所需的逻辑读取次数,但是我对以下相当简单的查询有疑问:

SELECT  a.*
FROM TT_TMP_3 AS a
INNER JOIN TT_TMP_4 AS b
  ON b.id = a.id

这是生成表格的代码:

CREATE TABLE TT_TMP_3(
  id int,
  x int)

DECLARE @i int
SET @i = 0

WHILE @i <= 100000
BEGIN
  INSERT INTO TT_TMP_3
  VALUES(@i, 1)

  SET @i = @i + 1
END

SELECT  *
INTO TT_TMP_4
FROM TT_TMP_3
WHERE id <= 770  

CREATE INDEX IDX ON TT_TMP_3(ID)

查询计划如下: Query plan

查询统计数据如下:
(771行受影响) 表'TT_TMP_3'。扫描计数771,逻辑读取2429,物理读取0,预读读取6,lob逻辑读取0,lob物理读取0,lob预读读取0 表'TT_TMP_4'。扫描计数1,逻辑读取3,物理读取0,预读取读取0,lob逻辑读取0,lob物理读取0,lob预读读取0。

TT_TMP_4中有771行,这就是需要搜索771索引的原因。每次搜索都需要2次逻辑读取。然后,对于已找到的每一行,需要执行RID_lookup以查找列x的值。这给了我们另外771个逻辑读取。总共有2313个读数,仍有116个缺失。

问题: 116个逻辑读取是什么?

0 个答案:

没有答案