トップ回答者
SQLServer2005 と 2008 とのクエリー実行プランの違いは?

質問
-
回答
-
こんにちは、naginoです。
2005 と 2008 との間では、実行プラン関連では大きな変更はありませんね。
2005、2008 いずれでも実行可能なクエリの場合は、大抵は同様の実行プランが作成されることが多いと考えられます。
ですので、互換性レベルの 90 と 100 との間でも、同様と考えられます。
ただし、クエリヒント等に変更が行われていますので、そういったものを使用したクエリの場合はクエリプランが変更になることがあります。
また、パーティションテーブルについては実行プランが異なることがあります。
あと、REPLACE 関数が特定の場合に挙動が異なるようです。
詳細は以下からたどれる 4 ページにまとまっています。
http://technet.microsoft.com/ja-jp/library/ms143532.aspx
(特に「~動作の変更」に関連する記載があります)
ご参考になれば幸いです。
MCITP(Database Developer/Database Administrator)- 編集済み nagino - 引退エンジニア 2009年5月7日 2:52 文言追加
- 回答としてマーク DEKOCHAN 2009年5月10日 7:19
-
nagino-san が既に回答されておりますが、互換性レベルによって、大幅に実行プランが変わることは無いと思います。 (今まで実行できたクエリが実行出来なくなることはございますが。)
ただ、SQL Server 2005、2008 ともに エンジン が異なっており、同じクエリを SQL Server 2005、SQL Server 2008 上にて実行したとしても、同様の実行プランになることは保証されていません。
そのため、SQL Server 2008 に移行後、実行時間が多大に増加するような処理が発生するかどうかは、確認する必要があると思います。- 回答としてマーク DEKOCHAN 2009年5月10日 7:19
すべての返信
-
こんにちは、naginoです。
2005 と 2008 との間では、実行プラン関連では大きな変更はありませんね。
2005、2008 いずれでも実行可能なクエリの場合は、大抵は同様の実行プランが作成されることが多いと考えられます。
ですので、互換性レベルの 90 と 100 との間でも、同様と考えられます。
ただし、クエリヒント等に変更が行われていますので、そういったものを使用したクエリの場合はクエリプランが変更になることがあります。
また、パーティションテーブルについては実行プランが異なることがあります。
あと、REPLACE 関数が特定の場合に挙動が異なるようです。
詳細は以下からたどれる 4 ページにまとまっています。
http://technet.microsoft.com/ja-jp/library/ms143532.aspx
(特に「~動作の変更」に関連する記載があります)
ご参考になれば幸いです。
MCITP(Database Developer/Database Administrator)- 編集済み nagino - 引退エンジニア 2009年5月7日 2:52 文言追加
- 回答としてマーク DEKOCHAN 2009年5月10日 7:19
-
nagino-san が既に回答されておりますが、互換性レベルによって、大幅に実行プランが変わることは無いと思います。 (今まで実行できたクエリが実行出来なくなることはございますが。)
ただ、SQL Server 2005、2008 ともに エンジン が異なっており、同じクエリを SQL Server 2005、SQL Server 2008 上にて実行したとしても、同様の実行プランになることは保証されていません。
そのため、SQL Server 2008 に移行後、実行時間が多大に増加するような処理が発生するかどうかは、確認する必要があると思います。- 回答としてマーク DEKOCHAN 2009年5月10日 7:19