データベースの最初のEntity Frameworkを使用した単純なWeb MVCアプリケーションがあります。私はテーブルから情報を取得しています。それは非常に遅いです。Entity FrameworkがSQL Serverを何度も呼び出しています
私は2つの問題を抱えて:私は、SQL Serverプロファイラでクエリを確認するとき
、それは別の選択クエリでfrom句と
Select
クエリとしてクエリを示しています。私はなぜそれがテーブル名の代わりに別の選択を使用しているのか分かりません。これはクエリを遅くすることができますか?私は行を取得しているときに、プロセスを遅くする行ごとにデータベースを呼び出しています。これは、テーブルのキーを使用して、各行のデータベースを再クエリしています。なぜ各行のデータベースを呼び出すのですか?最初のクエリですべての行が返されませんでしたか?
以下は私のコードとSQL Server Profilerの結果です。
コード:
List<FanDetail> fans = db.FanDetails.ToList();
foreach (var item in fans)
{
FanSummaryViewModel add = new FanSummaryViewModel()
{
Part_No = item.Part_No,
}
}
SQL Serverプロファイラは、クエリの結果:
SELECT
[Extent1].[Part_No] AS [Part_No]
FROM
(SELECT
[FanDetails].[Part_No] AS [Part_No]
FROM
[dbo].[FanDetails] AS [FanDetails]) AS [Extent1]
SQLプロファイラは、各用に結果:
exec sp_executesql N'SELECT TOP (1)
[Extent1].[Part_No] AS [Part_No]
FROM (SELECT
[FanDetails].[Part_No] AS [Part_No]
FROM [dbo].[FanDetails] AS [FanDetails]) AS [Extent1]
WHERE [Extent1].[Part_No] = = @p__linq__0',N'@p__linq__0 varchar(8000)',@p__linq__0='00405635'
私なら、私を知ってみましょうより詳細な情報を提供する必要があります。
私はEFの新人です。しばらくの間、このパフォーマンスの問題に取り組んでいます。あなたは、単一のクエリ内のすべてのクエリと投影を実現することができるはず
これは私が必要としていたものです。フィードバックとヘルプに感謝します。ページの読み込み時間が15-20秒から3秒に短縮されました。あなたの指示に従って、実装するのはとても簡単でした。 – user2011126