都内で働くSEの技術的なひとりごと / Technical soliloquy of System Engineer working in Tokyo

都内でサラリーマンやってます。SQL Server を中心とした (2023年からは Azure も。) マイクロソフト系(たまに、OSS系などマイクロソフト以外の技術も...)の技術的なことについて書いています。日々の仕事の中で、気になったことを技術要素関係なく気まぐれに選んでいるので記事内容は開発言語、インフラ等ばらばらです。なお、当ブログで発信、発言は私個人のものであり、所属する組織、企業、団体等とは何のかかわりもございません。ブログの内容もきちんと検証して使用してください。英語の勉強のため、英語の

実行プランの読み方をまとめてみる - その6 ( 実行プランの種類について説明してみる ) -

 夕方からの今年最後の飲み会までまだ時間があるので、本日、二本目のビールを飲みながら実行プランの種類についてまとめてみます。
f:id:koogucc11:20151230112053j:plain

 グラフィカルな実行プランについては、散々使ってきたので割愛します。それ以外の実行プランだと、テキストの実行プラン、XMLの実行プランの二つがあります。すべて実行してみました。

  • テキスト系の実行プラン

    • SET STATISTICS PROFILE ON

      SET STATISTICS PROFILE ON;
      GO
      SELECT
          SalesPersonID,
          COUNT(SalesPersonID)
      FROM
          Sales.SalesOrderHeader
      GROUP BY
          SalesPersonID
      GO
      SET STATISTICS PROFILE OFF;
      

      f:id:koogucc11:20151230111335p:plain

    • SET SHOWPLAN_ALL ON

      SET SHOWPLAN_ALL ON;
      GO
      SELECT
          SalesPersonID,
          COUNT(SalesPersonID)
      FROM
          Sales.SalesOrderHeader
      GROUP BY
          SalesPersonID
      GO
      SET SHOWPLAN_ALL OFF;
      

      f:id:koogucc11:20151230125359p:plain

    • SET SHOWPLAN_TEXT ON

      SET SHOWPLAN_TEXT ON;
      GO
      SELECT
          SalesPersonID,
          COUNT(SalesPersonID)
      FROM
          Sales.SalesOrderHeader
      GROUP BY
          SalesPersonID
      GO
      SET SHOWPLAN_TEXT OFF;
      

      f:id:koogucc11:20151230111449p:plain

  • XML系の実行プラン

    • SET STATISTICS XML ON

      SET STATISTICS XML ON;
      GO
      SELECT
          SalesPersonID,
          COUNT(SalesPersonID)
      FROM
          Sales.SalesOrderHeader
      GROUP BY
          SalesPersonID
      GO
      SET STATISTICS XML OFF;
      

      f:id:koogucc11:20151230111106p:plain

    • SET SHOWPLAN_XML ON

      SET SHOWPLAN_XML ON;
      GO
      SELECT
          SalesPersonID,
          COUNT(SalesPersonID)
      FROM
          Sales.SalesOrderHeader
      GROUP BY
          SalesPersonID
      GO
      SET SHOWPLAN_XML OFF;
      

      f:id:koogucc11:20151230110929p:plain

 各実行プランの特徴は下記の通りです。

  • テキスト系の実行プラン

    • SET STATISTICS PROFILE ON
      クエリの実行結果を得ることができます。CPUとか、推定行数などチューニングに必要が情報を得ることができます。
    • SET SHOWPLAN_ALL ON
      クエリの実行結果を得ることができません。SET STATISTICS PROFILE ON とほとんど同じですが、取得した行数や実行回数の情報が取得できません。
    • SET SHOWPLAN_TEXT ON
      クエリの実行結果を得ることができません。どのような結合をしているかくらいは判断できます。CPUとか、推定行数などに関しては取得できません。

  • XML系の実行プラン

    • SET STATISTICS XML ON
      クエリの実行結果を得ることができます。CPUとか、推定行数などチューニングに必要が情報を得ることができます。
    • SET SHOWPLAN_XML ON
      クエリの実行結果を得ることができません。CPUとか、推定行数などチューニングに必要が情報を得ることができます。

 通常使用するのは、複雑のクエリをチェックする場合に全体を俯瞰しやすい SET STATISTICS PROFILE ON を使用し、更に詳細をチェックする場合に、グラフィカルな実行プランを使用するといった感じです。トレースを取得したりする場合は、SET SHOWPLAN_ALL ON や SET SHOWPLAN_XML ON を使用したりします。(好みです(`・ω・´))

※酔っ払いながら、記事書くのはいいですねぇ。そろそろ、出かける準備しよう。