Share via


論理操作と物理操作のリファレンス

操作は、Microsoft SQL Server でクエリやデータ操作言語 (DML) ステートメントを実行する方法を示します。クエリ オプティマイザでは、操作を使用して、クエリで指定された結果を作成するクエリ プラン、または DML ステートメントで指定された操作を実行するクエリ プランが構築されます。クエリ プランは、物理操作をツリー構成で表現したものです。

操作は、論理操作と物理操作に分類されます。論理操作は、概念レベルでのリレーショナル クエリ処理操作を示します。物理操作では、論理操作で定義された操作が、具体的な方法またはアルゴリズムを使用して実際に実装されます。たとえば、join は論理操作で、nested loops joins は物理操作です。

  • 論理操作
    論理操作は、ステートメントの処理に使用される関係代数操作を表します。つまり、論理操作は、どのような操作を実行する必要があるかを、概念的に示します。
  • 物理操作
    物理操作では、論理操作によって示される操作が実装されます。それぞれの物理操作は、操作を実行するオブジェクトまたはルーチンです。たとえば、一部の物理操作は、テーブル、インデックス、またはビューから、列や行にアクセスします。他の物理操作は、他の種類の操作を実行します。たとえば、Aggregate 操作は、MIN、MAX、SUM、COUNT、または AVG を含む式を計算し、Merge Join 操作は、さまざまな種類の論理結合操作を実行します。

    物理操作では、初期化、データの収集が行われた後に終了されます。具体的には、物理操作は次の 3 つのメソッド呼び出しに応答できます。

    • Init(): Init() メソッドは、物理操作自体を初期化し、必要なデータ構造を設定します。通常、物理操作が受け取る Init() 呼び出しは 1 つだけですが、多くの Init() 呼び出しを受け取る場合もあります。
    • GetNext(): GetNext() メソッドにより、物理操作がデータの最初の行または後続の行を取得します。物理操作が受け取る GetNext() 呼び出しは、多数の場合もゼロの場合もあります。
    • Close(): Close() メソッドにより、物理操作はなんらかのクリーンアップ操作を実行し、物理操作自体がシャットダウンされます。物理操作は、Close() 呼び出しを 1 つだけ受け取ります。

GetNext() メソッドは、データ行を 1 行返します。このメソッドが呼び出された回数は、SET STATISTICS PROFILE ON または SET STATISTICS XML ON を使用して生成されるプラン表示出力で ActualRows として表示されます。これらの SET オプションの詳細については、「SET STATISTICS PROFILE (Transact-SQL)」および「SET STATISTICS XML (Transact-SQL)」を参照してください。

プラン表示出力に表示される ActualRebinds および ActualRewinds の数は、Init() メソッドが呼び出された回数を示します。ループ結合内部での操作でなければ、ActualRebinds は 1、ActualRewinds は 0 になります。ループ結合内部での操作の場合、再バインドと巻き戻しの合計数は、結合外部で処理された行数に等しくなる必要があります。再バインドとは、結合の変更された相関パラメータと、内側部分の相関パラメータの 1 つ以上を再評価する必要があることを意味します。巻き戻しとは、変更された相関パラメータを使用せず、前の内部の結果セットを再利用することを意味します。

ActualRebinds および ActualRewinds は、SET STATISTICS XML ON を使用して生成された XML プラン表示出力に存在します。これらは、Nonclustered Index SpoolRemote QueryRow Count SpoolSortTable Spool、および Table-valued Function の各操作に対してのみ作成されます。また、ActualRebinds および ActualRewinds は、StartupExpression 属性が TRUE に設定されると、Assert 操作と Filter 操作に対しても作成される場合があります。

ActualRebinds および ActualRewinds が XML プラン表示に存在する場合、これらの値が EstimateRebinds および EstimateRewinds に相当します。存在しない場合、予測行数 (EstimateRows) が実際の行数 (ActualRows) に相当します。この場合、実際のグラフィカルなプラン表示出力では、実際の再バインド数と実際の巻き戻し数としてゼロが表示されることに注意してください。グラフィカルなプラン表示の詳細については、「グラフィカル実行プランの表示 (SQL Server Management Studio)」を参照してください。

関連するカウンタ ActualEndOfScans は、プラン表示出力が SET STATISTICS XML ON を使用して生成されている場合のみ使用できます。物理操作がデータ ストリームの最後に達するたびに、このカウンタの値は 1 ずつ増加します。物理操作がデータ ストリームの最後に達することのできる回数は、0 回、1 回、あるいは複数回です。再バインドおよび巻き戻しと同様に、スキャンの終了回数は、ループ結合内部での操作の場合のみ 2 回以上になります。スキャンの終了回数は、再バインドおよび巻き戻しの合計数以下になる必要があります。

物理操作は、実行アルゴリズムに相当します。物理操作の例には、index scan、index seek、nested loop join、merge join、hash join、hash aggregation、stream aggregation などがあります。物理操作には、それぞれ関連するコストがかかります。クエリや DML ステートメントの実行の各手順には、それぞれ物理操作が必要になります。

物理操作と論理操作の対応関係

クエリ オプティマイザでは、ツリー構成の論理操作としてクエリ プランが作成されます。クエリ オプティマイザでは、プランが作成されると、各論理操作にとって最も効率的な物理操作が選択されます。クエリ オプティマイザでは、論理操作をどの物理操作から実装するかを判断するために、コストベースの手法が使用されます。

通常、複数の物理操作で 1 つの論理操作を実装できます。ただし、めったにないケースですが、1 つの物理操作で複数の論理操作を実装することもできます。

このセクションの内容

このセクションには、次の論理操作と物理操作の説明が含まれています。

Aggregate

Log Row Scan

Arithmetic Expression

Merge Interval

Assert

Merge Join

Assign

Nested Loops

Async Concat

Nonclustered Index Update

Bitmap

Nonclustered Index Spool

Bitmap Create

Nonclustered Index Seek

Bookmark Lookup

Nonclustered Index Scan

Branch Repartition

Nonclustered Index Insert

Broadcast

Nonclustered Index Delete

Cache

Online Index Insert

Clustered Index Delete

Parallelism

Clustered Index Insert

Parameter Table Scan

Clustered Index Scan

Partial Aggregate

Clustered Index Seek

Population Query

Clustered Index Update

Refresh Query

Collapse

Remote Delete

Compute Scalar

Remote Insert

Concatenation

Remote Query

Constant Scan

Remote Scan

Convert

Remote Update

Cross Join

Repartition Streams

Cursor Catchall

Result

Declare

RID Lookup

Delete

Right Anti Semi Join

Deleted Scan

Right Outer Join

Distinct

Right Semi Join

Distinct Sort

Row Count Spool

Distribute Streams

Segment

Dynamic

Segment Repartition

Eager Spool

Sequence

Fetch Query

SequenceProject

Filter

Snapshot

Flow Distinct

Sort

Full Outer Join

Split

Gather Streams

Spool

Hash Match

Stream Aggregate

Hash Match Root

Switch

Hash Match Team

Table Delete

If

Table Insert

Inner Join

Table Scan

Insert

Table Spool

Inserted Scan

Table Update

Intrinsic

Table-valued Function

Iterator Catchall

Top

Key Lookup

Top N Sort

Keyset

UDX

Language Element Catchall

Union

Lazy Spool

Update

Left Anti Semi Join

While

Left Outer Join

カーソル論理プラン表示操作とカーソル物理プラン表示操作

Left Semi Join

 

参照

関連項目

グラフィカル実行プランの表示 (SQL Server Management Studio)

概念

プラン表示 SET オプションを使用した実行プランの表示 (Transact-SQL)

ヘルプおよび情報

SQL Server 2005 の参考資料の入手