2012-01-06 7 views
0

かなり単純なEF 4.1コードの最初のモデルでWCFデータサービスを作成しました。リクエストごとに、マルチテナントDB内のデータの分離を維持するためにクライアントIDを提供する必要があります。私はひどいパフォーマンスを見ているし、SQL Serverのトレースを実行した後、私はすべてのparametrizedクエリはサブクエリを使用しているように見える。EFコードのサブクエリを最初に4.1

select top 100 <This is because of paging> 
colA, 
colB, 
colC 
from (select colA, colB, colC 
     from table 
     where clientid = 12345) 
orderby ..... 

選択のためにサブクエリをスキップするように調整する方法はありますか?それは不必要に不必要なようであり、パフォーマンスは驚くほどの大きさで遅くなります。

ありがとうございました。

+0

インデックスが必要なのでしょうか? SSMSで同じクエリを実行し、インデックスが推奨されているかどうかを確認してください。 –

+0

関連LINQクエリを投稿するのに気をつけますか? –

答えて

1

これを微調整して、選択のためにサブクエリをスキップする方法はありますか?

MSSQL Server(または使用している他のデータベース)のEFプロバイダー全体を書き換えない限り、いいえです。

これは、不必要に不必要なように見え、パフォーマンスが驚くほどの大きさで低下します。

実際にパフォーマンスの問題の原因を調査しましたか?表示された問合せは、DBサーバー上の問合せオプティマイザによって最適化されている必要があります。パフォーマンスに大きな影響はありません。

インデックスとデータの統計情報が正しく設定されていることを確認してください。

+0

ありがとう、それは私が恐れていたものです。私はインデックスに問題があるかもしれないことは間違いない。しかし、私が対処しているテーブルは現在3.5tb近くにあり、誰もがそれに触れることを恐れています。しかし、私はその影響を研究します。 – RockyMountainHigh

関連する問題