4

Azure sql db にストアド プロシージャがあり、SSMS から実行すると、約 300 ミリ秒で完了します。sproc は ID と日付範囲を受け取り、いくつかのデータを収集して集計テーブルに保存します。結果は返されません。

EF コードの最初の ExecuteStoreCommand オブジェクト (同じパラメーターを使用) から実行すると、完了するまでに約 60 秒かかります。

context.Database.ExecuteSqlCommand と context.Database.SqlQuery も同じ結果で使用しようとしましたが、非常に遅いです!

sproc の直接実行と比較して EF の実行が非常に遅い理由を誰か説明してもらえますか?

EFが何をしているかを教えてくれるまともなツールはありますか(プロファイラー?)

4

1 に答える 1

0

ストアド プロシージャのコードがなければ、どの "ベスト プラクティス" を考慮していないかを判断するのは難しいでしょうが、このページ「コード プロジェクト: パフォーマンスとエンティティ フレームワーク」には、EF パフォーマンスの向上に関する多くの優れた情報があります。

この「記事」には、Visual Studio 2010 プロファイラー ツールを使用して EF のデータ アクセス アクティビティを分析するための有益な情報が多数含まれています。

于 2012-12-19T22:19:09.437 に答える