web-dev-qa-db-ja.com

SQL Server 2014でクエリプランがパフォーマンスを悪化させる

最近、サーバーをSQL Server 2008R2からSQL Server 2014にアップグレードしました。2008R2で正常に実行されたクエリがありますが、2014年には実行速度が非常に遅くなり、実行計画が不良です。

私はいくつかのテストを行いました...

  1. 2014 DBを2008/2012互換モードに切り替えます。
  2. ページネーションを使用してクエリをテストします。

これらの両方により、クエリはSQL Server 2008R2と同じように高速に実行されました。

SQL Server 2014で計画がなぜそれほどひどく、クエリが長く実行されるのですか?

Estimated/Actual

この画像は2つのクエリを示しています。1つは2008R2での実行方法と同じように行番号を使用し、2つ目は改ページ調整を使用した修正です。どちらも2014年に実行されましたが、どちらも非常に異なりますが、2008年には、2014年に改ページ調整を使用した場合と同じパフォーマンスが得られます。

10
Jeff

これは問題ではなく、仕様によるものであり、パフォーマンスの向上と見なされます。

クエリが期待どおりに実行されない場合は、データベース/アプリケーションのコードでこれに対処する必要があります。

OPTION (QUERYTRACEON 9481)を使用して)サーバー、セッション、またはクエリレベルでトレースフラグ9481を使用すると、古いカーナリティ推定を強制できます。これにより、データベースの互換性レベルに関係なく強制されます。

CSSチームがここに投稿した の情報もたくさんあります。

Cardanility Estimatorと変更に関するより詳細な投稿 SQL Server 2014でのそのプロセスについての例が含まれています。

7
user507