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


10

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

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

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

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

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

推定/実際

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

回答:


7

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

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

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

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

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


それは何かがおかしくなった言い訳のように聞こえます
dvdmn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.