我有 .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 不是一个大实体(我确实需要它的所有属性)。有什么方法可以让它表现得更好吗?