0

私は多くの時間がかかっている次のクエリを持っています -

var allEmployees = (from e in context.Employees.Expand("Payroll/Customer")
.Expand("HR")
.Expand("Payroll1")                                                 
where e.IsActive
&& e.Payroll.EmployeeId== this.CurrentEmployee.EmployeeId
orderby e.Name
select e).ToArray();

質問 -

  1. どうすればパフォーマンスを向上させることができますか?
  2. クエリのどの部分に時間がかかりすぎていますか? Expand 句、where、orderby、select の可能性があります。
  3. 最後に、結果を配列に変換しています。パフォーマンスに影響を与える可能性はありますか?
  4. Parallel.For、PLINQ など、他の選択肢はありますか。よくわかりません。

提案してください

4

2 に答える 2

0

最も重要な部分はあなたのエキスパンドです

いいえ、 Parallel LINQ を使用して WCF データ サービスを介して LINQ を実行することはできません。

最良の方法は、顧客と人事および給与テーブル間の関係の外部キーにインデックスを付けることです

ToArray に時間がかかりすぎない

SQL プロファイラーと SQL 実行計画を使用して、パフォーマンスを改善し、ボトルネックを見つけます

サービス層でメソッドを作成することを検討し、 Select メソッドを使用して必要な列のみを返す

もう 1 つのベスト プラクティスは、XML シリアライザーを使用する代わりに JSON 形式を使用することです。これにより、応答サイズが最大 70% 減少します。

さらに詳しい情報が必要な場合はお知らせください。

幸運を

于 2013-09-11T10:52:33.920 に答える