.NET Entity Framework 3.5 によって生成された SQL ステートメントがあり (EF 3.5 では既に最適化されており、まもなく 4 にアップグレードされます)、2005 SQL Server で実行されます。一般的な SQL パフォーマンスについて説明している記事がたくさんあることは知っていますが、私の問題に対する具体的な解決策は見つかりませんでした。この状況の参照または解決策が必要です。ASP.NET アプリケーションには、特定の情報 (6 ~ 7 列など) を含むテーブルがあり、ユーザーがテーブルで並べ替え操作を実行すると、7 ~ 15 時間がかかります。情報を取得するのに数秒かかります(...アプリケーションは社内用であるため、これはパフォーマンスが低下します)。
記事から usp_Worst_TSQL を実行しました : http://www.databasejournal.com/features/mssql/article.php/3802936/Finding-the-Worst-Performing-T-SQL-Statements-on-an-Instance.htmパフォーマンスの問題の原因を突き止める: WHERE、INNER & LEFT JOIN、および ORDER BY 句を使用するネストされたクエリがいくつかあります。
ステートメント内の SQL ステートメント句に関するインデックスを作成する際の考慮事項は何ですか? また、いつ複合インデックスを作成する必要がありますか?
編集:私は問題がどこにあるかからアイデアを得ることができました。コードにこの LINQ と foreach ループがあり、データを取得するのに丸 3 秒かかります。
foreach (string status in searchObj.Statuses)
{
from f in tblFormsQO
where f.tblFormStatus.Count > 0 && f.tblFormStatus.Count(s => s.StatusDate == null) == 0
&& f.tblFormStatus.OrderByDescending(s => s.StatusDate).FirstOrDefault().CurrentStatus.CodeDesc == status
select f
}
ここで、f は大きなエンティティではありません (そして、そのすべてのプロパティが必要です)。パフォーマンスを向上させる方法はありますか?