私はストアドプロシージャで次のようにピボット操作を実行していますが、レポートに使用しているときのパフォーマンスに影響します。SQL - ピボットクエリのパフォーマンスを向上させる
パフォーマンスを向上させるために、このピボット操作には何らかの方法がありますか?またはこれにインデックスを適用できますか?
SELECT colId,colSequence,colDescription,
ISNULL([1],0) AS 'IESO',ISNULL([2],0) AS 'RFRC',ISNULL([3],0) AS 'EAL',ISNULL([4],0) AS 'HNS',ISNULL([5],0) AS 'PTE',ISNULL([6],0) AS 'EOC',ISNULL([7],0) AS 'MU'
FROM
(
SELECT PF.FeatureId,PF.Sequence,PF.[Description],PTB.BenefitId,
FROM PSP.table1 PF
LEFT JOIN PSP.table2 PTB ON PF.FeatureId = PTB.FeatureId
left JOIN PSP.table3 PO ON PO.productID = PF.productId
WHERE PF.ProductId = @ProductId AND PF.IsDeleted = 0
) PS
PIVOT
(
MAX (BenefitId)
FOR BenefitId IN
([1],[2],[3],[4],[5],[6],[7])
) AS pvt
ORDER BY colSequence
なぜ副問合せでPOを使用しますか?そのフィールドは選択に使用されません –
実行計画を掲載します。 'テーブル1,2&3'で利用可能な' 'インデックス' 'は何ですか? –
このページでSQLを実行してみてください。もしあなたがインデックスを見落としているのであれば、 :http://www.mikesknowledgebase.com/pages/SQLServer/FindingMissingIndexes.htm –