1

データ モデルの一部として作成した T-SQL ビューを使用する ASP.NET MVC アプリケーションがあります。ビュー データを取り込むことはできますが、パフォーマンスが非常に低下しています。

SQL Server 2008 でビューを実行するSELECT *と、187,101 行すべてを返すのに 20 分以上かかります。

ビューで a を実行するSELECT TOP 1000000と、同じ 187,101 行が 2 秒で返されます。

そのため、ASP.NET MVC アプリケーションでパフォーマンスを向上させるためにステートメントをビュー デザインに含めましたTOPが、結果を 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)

ビュー デザインのイメージを次に示します。

見る

4

1 に答える 1