このようなリクエストがあります
SELECT
[EstimateId],
[CreationUserId],
[EstimateStatusValueId],
[LanguageId],
[LocationId],
[EstimatorUserId],
[FilterUnitSystemTypeId],
[EstimateNumber],
[RevisionNumber],
[CreationDate],
[ModificationDate],
[ProjectDescription],
[IsBsdq],
[ClosingDate],
[ClosingTime],
[ClosingUpdatedOn],
[DeadLineDate],
[IsReceived],
[Inclusion],
[Exclusion],
[Misc],
[Note],
[WorkDeadLines],
[Comments],
[Validity],
[PlansLocation],
[PlansReceivedFrom],
[Price]
FROM [Estimate].[Estimates]
ORDER BY [ClosingDate] ASC, [ClosingTime] ASC
SSMSでこのクエリを実行すると、953msの実行時間が得られますが、C#でLinqクエリからこのクエリを実行すると、1813msの実行時間が得られます。
Linqクエリは「.Net SqlClient Data Provider」を使用し、EntityFramework(EDMXファイル)に対して発行されます。これは問題になる可能性がありますか?
同じデータベースの異なるコンテキストから実行されるリクエストの実行時間に大きな違いがある理由を誰もが知っていますか?
両方の要求のすべての実行計画を検証し、それぞれのクエリを満たすために同じインデックスを使用します。
C#リクエストの実行計画を確認するには、SQLプロファイラーを使用してShow Plan XMLイベントをトラップし、それをSSMSの1つと比較します。両方とも同じです。
ちょっとした質問-検索条件なしですべてのテーブルのデータを選択するのはなぜですか?フィルタリングなしでアプリケーションのすべてのデータが本当に必要ですか?
—
マリアン
はい、これは必要な機能ですが、この機能はあまり使用されません。where句なしで大きなクエリを発行するのは最適ではないことを知っています。
—
ニコ
とにかく、私の懸念はリクエスト自体ではなく、実行時間の違いです。このクエリを紹介しますが、すべてのクエリで同様の結果が得られます。どうして ?
—
ニコ