none
SQLServer2005 と 2008 とのクエリー実行プランの違いは? RRS feed

  • 質問

  • お世話になっております。

    SQLServer2000とSQLServer2005とで
    SELECT文などのクエリー時のアクセスパス(実行プラン)作成ロジックは大幅に改良されたようですが
    2005と2008とでは、実行プランの組み方に変更された箇所はありますでしょうか?
    (機能やコマンドの追加・統廃合ではなく、あくまでクエリー実行プランについて)

    また、データベースの互換性レベルを90に保ったまま2008で使う場合と100に引き上げた場合とでも
    クエリー実行プランに変化はあるのでしょうか?

    情報をお寄せ頂けますと幸いです。
    宜しくお願い致します。
    2009年5月7日 0:59

回答

  • こんにちは、naginoです。

    2005 と 2008 との間では、実行プラン関連では大きな変更はありませんね。
    2005、2008 いずれでも実行可能なクエリの場合は、大抵は同様の実行プランが作成されることが多いと考えられます。
    ですので、互換性レベルの 90 と 100 との間でも、同様と考えられます。

    ただし、クエリヒント等に変更が行われていますので、そういったものを使用したクエリの場合はクエリプランが変更になることがあります。
    また、パーティションテーブルについては実行プランが異なることがあります。
    あと、REPLACE 関数が特定の場合に挙動が異なるようです。

    詳細は以下からたどれる 4 ページにまとまっています。
    http://technet.microsoft.com/ja-jp/library/ms143532.aspx
    (特に「~動作の変更」に関連する記載があります)

    ご参考になれば幸いです。

    MCITP(Database Developer/Database Administrator)
    2009年5月7日 2:50
  • nagino-san が既に回答されておりますが、互換性レベルによって、大幅に実行プランが変わることは無いと思います。 (今まで実行できたクエリが実行出来なくなることはございますが。)
    ただ、SQL Server 2005、2008 ともに エンジン が異なっており、同じクエリを SQL Server 2005、SQL Server 2008 上にて実行したとしても、同様の実行プランになることは保証されていません。

    そのため、SQL Server 2008 に移行後、実行時間が多大に増加するような処理が発生するかどうかは、確認する必要があると思います。


    • 回答としてマーク DEKOCHAN 2009年5月10日 7:19
    2009年5月7日 4:07

すべての返信

  • こんにちは、naginoです。

    2005 と 2008 との間では、実行プラン関連では大きな変更はありませんね。
    2005、2008 いずれでも実行可能なクエリの場合は、大抵は同様の実行プランが作成されることが多いと考えられます。
    ですので、互換性レベルの 90 と 100 との間でも、同様と考えられます。

    ただし、クエリヒント等に変更が行われていますので、そういったものを使用したクエリの場合はクエリプランが変更になることがあります。
    また、パーティションテーブルについては実行プランが異なることがあります。
    あと、REPLACE 関数が特定の場合に挙動が異なるようです。

    詳細は以下からたどれる 4 ページにまとまっています。
    http://technet.microsoft.com/ja-jp/library/ms143532.aspx
    (特に「~動作の変更」に関連する記載があります)

    ご参考になれば幸いです。

    MCITP(Database Developer/Database Administrator)
    2009年5月7日 2:50
  • nagino-san が既に回答されておりますが、互換性レベルによって、大幅に実行プランが変わることは無いと思います。 (今まで実行できたクエリが実行出来なくなることはございますが。)
    ただ、SQL Server 2005、2008 ともに エンジン が異なっており、同じクエリを SQL Server 2005、SQL Server 2008 上にて実行したとしても、同様の実行プランになることは保証されていません。

    そのため、SQL Server 2008 に移行後、実行時間が多大に増加するような処理が発生するかどうかは、確認する必要があると思います。


    • 回答としてマーク DEKOCHAN 2009年5月10日 7:19
    2009年5月7日 4:07
  • nagino様 NOBTA様

    ご教示有難う御座います。

    MSのエンジニア様からも、2005と2008は殆ど(無いといっていいくらい)変更ないと伺っていました。
    ただ、実際に確かめてみるのが確実ですね。
    2009年5月10日 7:19