3

SQLサーバーがデータにアクセスする方法を理解しようとしています。
非常に単純なクエリの場合、必要な論理読み取りの数を正確に計算できますが、かなり単純なクエリに従うことに問題があります。

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)

クエリプランは次のとおりです。 クエリ プラン

クエリ統計は次のとおりです:
(影響を受ける 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 つの論理読み取りが必要です。次に、見つかった行ごとに、列 x の値を見つけるために RID_lookup を実行する必要があります。これにより、さらに 771 回の論理読み取りが可能になります。合計で 2313 の読み取りがあり、まだ 116 が欠落しています。

質問:これらの 116 の論理読み取りは何のためですか?

4

0 に答える 0