我有一个 ASP.NET MVC 应用程序,它使用我创建的 T-SQL 视图作为其数据模型的一部分。我能够提取视图数据,但性能很差。
如果我SELECT *
在 SQL Server 2008 中对视图执行操作,则需要 20 多分钟才能返回所有 187,101 行。
如果我SELECT TOP 1000000
在视图上执行操作,我会在 2 秒内返回相同的 187,101 行。
因此,我TOP
在视图设计中包含了该语句,以尝试在 ASP.NET MVC 应用程序中获得更好的性能,但在 WebGrid 中加载结果仍然需要大约 6 秒。
显然,我的视图设计中有一些东西会影响性能,但我不知道如何解决它。我阅读了有关聚集索引视图的信息,但我无法架构绑定视图,因为需要能够修改表。
这是SELECT
我用来创建视图的语句:
SELECT TRD.Description AS Pbm,
MV.ExtractHistoryMemberValueId,
MV.FieldDescription,
MV.FieldValue,
HM.ExtractHistoryMemberId,
HM.CaseNum,
HM.CertNum,
HM.ClmtNum,
HM.PlanNum,
EH.ExtractHistoryId,
EH.ExtractDate
FROM OutgoingAccumulators.ExtractHistoryMemberValues AS MV
INNER JOIN OutgoingAccumulators.ExtractHistoryMembers AS HM
ON (MV.ExtractHistoryMember = HM.ExtractHistoryMemberId)
INNER JOIN OutgoingAccumulators.ExtractHistories AS EH
ON (HM.ExtractHistory = EH.ExtractHistoryId)
INNER JOIN OutgoingAccumulators.Extracts AS EX
ON (EH.Extract = EX.ExtractId)
INNER JOIN Accumulators.Interfaces AS INF
ON (EX.Interface = INF.InterfaceId)
INNER JOIN Accumulators.TradingPartners AS TRD
ON (INF.TradingPartner = TRD.TradingPartnerId)
这是视图设计的图像: