2016-08-07 11 views

답변

1

자동 인덱싱 된 뷰 것이 유지되는 미리 계산 된 응집체를 기억 사용할 최상의기구는, 그것이 지속 계산 열 비아 불가능 (이 계산하기 위해 계산 된 열에 스칼라 UDF를 사용할 수도 결과는 유지 될 수 없으며 이러한 계산 된 열은 일반적으로 RBAR 평가를 강제하고 병렬 처리를 차단할 때 성능에 좋지 않습니다.

CREATE VIEW dbo.AggregatedSales 
WITH SCHEMABINDING 
AS 
SELECT SalesOrder, 
     SUM(Amount) AS Total 
FROM dbo.YourTable 
GROUP BY SalesOrder 

GO 

CREATE UNIQUE CLUSTERED INDEX UIX ON dbo.AggregatedSales(SalesOrder) 

그러면 집계가 미리 계산되어보기에 저장됩니다. 검색어가보기에 참여해야합니다. 사전 계산 된 집계가 실제로 사용되고 런타임에 다시 계산되지 않도록하려면 NOEXPAND 힌트를 사용해야 할 수도 있습니다. SQL 서버의 경우

+0

좋아요, 감사합니다! stackexchange의 속도는 놀랍습니다. –

+0

@el_kraken,이 대답이 유용 할 경우 대답을 수락하십시오. – RGS

0

2012

CREATE TABLE #t (saleOrder int , amount int) 

    INSERT INTO #t VALUES 
    (100,10) 
    ,(100,15) 
    ,(101,20) 
    ,(101,25) 
    ,(102,30) 
    ,(102,35) 

     SELECT * 
      ,SUM(amount) OVER (PARTITION BY saleorder) as [total] 
     FROM #t 

결과 :

saleOrder | amount | total 
========================== 
    100 | 10 | 25 
    100 | 15 | 25 
    101 | 20 | 45 
    101 | 25 | 45 
    102 | 30 | 65 
    102 | 35 | 65 
+0

이것은 사전 계산에 신경 쓰지 않기로 결정한 경우 2005 년에 실제로 작동합니다. –

관련 문제