1

リンクサーバーからデータを取得するローカルサーバー上にビューを作成しました。リンク先では、読み取り権限しかありません。

ビューのパフォーマンスを向上させようとしています。SCHEMABINDINGを使用してビューを作成しようとしましたが、リモートアクセスでSCHEMABINDINGを使用することは許可されていません。マテリアライズドビューを読んでみました。はい、それがOracleの関数であることは知っていますが、SQL Server2008r2に同様の機能があるかどうかを知りたいと思いました。

クエリのパフォーマンスを向上させる方法についてのアイデアはありますか?

CREATE VIEW [dbo].[vw_CustomerServiceLevel]

AS
SELECT *
FROM [10.205.0.70].Freightware.dbo.CustomerServiceLevelReportEOF RF
INNER JOIN [10.205.0.70].Freightware.dbo.CustomerServiceLevelReportDetail RD 
  ON (RD.HeaderGUID=RF.HeaderGUID)
INNER JOIN [10.205.0.70].Freightware.dbo.CustomerServiceLevelReportHeader RH 
  ON (RH.HeaderGUID=RD.HeaderGUID)
LEFT JOIN SDBPHASE2DW.dbo.DimDate dd
  ON CONVERT(VARCHAR(10), RH.StartDate, 103) = CONVERT(VARCHAR(10), dd.FullDate, 103)
LEFT JOIN SDBPHASE2DW.dbo.DimDate dd2
  ON CONVERT(VARCHAR(10), RH.EndDate, 103) = CONVERT(VARCHAR(10), dd2.FullDate, 103)

実行計画

4

1 に答える 1

1

コードを最適化するためにできることはいくつかあります。

  1. すべての戻り列が必要ですか?そうでない場合は、必要な列のみを選択してください。
  2. 結合が行われるフィールドを変換する必要がありますか?それらは同じように見えるので、convertステートメントを削除できます。
  3. すべてのレコードが必要ですか?そうでない場合は、ビューの代わりに使用定義関数を使用してください-返されたデータをカットするいくつかのパラメーターを渡すことができることを除いて、ビューと同じになります。
于 2012-09-06T09:41:43.453 に答える