다음과 같이 저장 프로 시저에서 피벗 작업을 수행하고 있지만 성능에 영향을 미치며 보고서에 사용하고 있습니다.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를 사용합니까? 그 필드는 select –
에 사용되지 않습니다. 실행 계획을 게시하십시오. 'table 1,2 & 3'에서 사용 가능한'인덱스 '는 무엇입니까 –
이 페이지에서 SQL을 실행하여 어떤 인덱스가 누락되었는지 확인할 수 있습니다 (그렇다면 성능에 어떤 영향을 미칠지) : http://www.mikesknowledgebase.com/pages/SQLServer/FindingMissingIndexes.htm –