0

SQL Server 2008 r2では、クロス結合クエリの実行が遅くなります。それは私たちのシステムにあまりにも多くの問題を引き起こしています。SQL Server 2012での移行により、相互結合の問題を解決できますか。以前は、そのような問題がないsql2005を使用しています。しかし、今は戻ることができません。これで問題が解決するかどうかはわかりません。また、パフォーマンス面では、クロス結合クエリの実行において、2012年は2008年のr2よりも優れていますか?

select '37' as orddate,brand from maindb1.dbo.contract_report where jobnumber in (select      distinct [Job Number] from maindb1.dbo.v_alltype_st where [day] like '%2012' and DATEPART(WEEK,CONVERT(datetime,[DAY],103))='37') and brand<>'' and brand<>'N/A' 

上記は約7分で実行され、以下は約32秒で実行されます

select brand from maindb1.dbo.contract_report where jobnumber in (select distinct [Job Number] from maindb1.dbo.v_alltype_st where [day] like '%2012' and DATEPART(WEEK,CONVERT(datetime,[DAY],103))='37') and brand<>'' and brand<>'N/A' 

唯一の違いは、上記のフィールドには1つの追加フィールドがあることです。

1つはテーブルで、もう1つはビューです。これが唯一の例ではありません。

4

1 に答える 1

1

2005 では見られなかったパフォーマンスの問題が 2008 R2 で見られ、このデータベースが直接アップグレードされたか、バックアップ/復元またはデタッチ/アタッチによって移行された場合は、次のことを確認する必要があります。

(a)関連するすべてのテーブルの統計を手動で更新する

(b)互換性レベルを 100 に設定してください

一般に、SQL Server 2012 は、主にオプティマイザーの改善により、基本的なパフォーマンスの向上を提供するはずです。クロス ジョインに固有の拡張機能があるとは思いませんが、ソース コードにも詳しくないので、とにかくそれを知るのは難しいでしょう。

于 2012-09-14T12:59:31.250 に答える