sql >> データベース >  >> RDS >> Sqlserver

SQLServerでのSHOWPLAN_XMLのしくみ

    SQL Serverでは、SET SHOWPLAN_XMLを使用できます。 明確に定義されたXMLドキュメントの形式で、T-SQLステートメントの実行方法に関する詳細情報を返すステートメント。

    SHOWPLAN_ALLに似ています 、ただしSHOWPLAN_ALL 階層ツリーを形成する行のデータセットを返します。

    SHOWPLAN_XMLを設定できます ONのいずれかに またはOFF

    SHOWPLAN_XMLの場合 ONです 、後続のすべてのT-SQLステートメントは実行されません。代わりに、SQL Serverはステートメントの実行情報を(実行せずに)返します。

    実例を示します。

    SET SHOWPLAN_XML ON;
    GO
    
    SELECT * FROM Cats c
    INNER JOIN Dogs d
    ON c.CatName = d.DogName;
    GO

    SET SHOWPLAN_XMLに注意してください ストアドプロシージャ内で指定することはできません。また、バッチ内の唯一のステートメントである必要があります。

    得られる結果は、SQLServerへのアクセスに使用しているツールによって異なる場合があります。

    これをAzureDataStudioで実行すると、さまざまなタブをクリックして、結果の別のビューを取得できます。

    結果 タブには生のXML文字列が表示されます:

    行をクリックすると、新しいタブでXMLドキュメントが開きます。

    クエリプラン タブには、結果のグラフィック表現が表示されます:

    トップオペレーション tabは、さまざまなメトリックでデータを並べ替えることができる表形式でデータを表示します。

    機能しませんか?

    うまくいかない場合は、実際の実行計画を含めることを確認してください SSMSでは選択されていません。これを選択すると、SET SHOWPLAN_XML ON XMLShowplan出力は生成されません。

    オフにする方法

    SET SHOWPLAN_XML OFFを使用してオフにできます 。

    これを実行すると、後続のステートメントは通常どおり実行されます。

    SET SHOWPLAN_XML OFF;
    GO
    
    SELECT * FROM Cats c
    INNER JOIN Dogs d
    ON c.CatName = d.DogName;
    GO

    結果:

    Commands completed successfully.
    +---------+-----------+---------+-----------+-----------+
    | CatId   | CatName   | DogId   | DogName   | GoodDog   |
    |---------+-----------+---------+-----------+-----------|
    | 2       | Fluffy    | 2       | Fluffy    | 0         |
    +---------+-----------+---------+-----------+-----------+
    (1 row affected)
    Commands completed successfully.

    GUIでの実行計画

    SSMSやAzureDataStudioなどのグラフィカルツールを使用している場合は、推定されたグラフィカルクエリ実行プランを表示するためのショートカットオプションがある場合があります。これにより、SET SHOWPLAN_XML ONを実行しなくてもクエリプランを表示できます。 。

    推定クエリプランを実行するには:

    • SSMSでは、 Ctrl + Lを使用できます これをする。または、推定実行プランの表示をクリックすることもできます アイコンをクリックするか、クエリウィンドウを右クリックして、[推定実行プランの表示]を選択します。 。これにより、SHOWPLAN_XMLを有効にする必要がなくなります。 コード内でオンとオフを切り替えます。
    • Azure Data Studioでは、説明をクリックできます クエリウィンドウの上にあるボタン。

    実際のクエリプランを実行することもできます:

    • SSMSでは、クエリ メニューで、[実際の実行プランを含める]をクリックします または、実際の実行プランを含めるをクリックします ツールバーボタン。
    • Azure Data Studioで、表示>コマンドパレットに移動します 実際の計画で現在のクエリを実行と入力します 。

    実際の実行プランを含める場合は注意してください SSMSで選択されている場合、SET SHOWPLAN_XML ON オプションはXMLShowplan出力を生成しません。 実際の実行プランを含めるをクリアしてみてください このSETを使用する前にボタン オプション。

    ただし、AzureDataStudioは反対のSHOWPLAN_XML ONを実行します。 実際の計画で現在のクエリを実行を上書きするようです Explainを実行する場合を除いてオプション 最初(推定クエリプラン)、その後実際のプランで現在のクエリを実行 突然動作します(実際の行 および実際の処刑 トップオペレーションの列 タブは適切なデータを返します。

    クエリプランを取得するために他の方法を使用する前に、XMLShowplanオプションをオフにするのがおそらく最善です。


    1. PostgreSQLでOracleデータベースにアクセスする方法

    2. 各グループの最後のレコードを取得する-MySQL

    3. Moodle3.9でデータベーストラフィックの読み取り/書き込み分割を使用してパフォーマンスを向上させる

    4. SQL-COALESCEとISNULLの違いは?