2011-03-02 3 views
2

SQL Server의 XQuery 프로젝션에서 약간의 성능을 얻었습니다. 다음 변환을 작성하는 가장 좋은 방법은 무엇입니까?XQuery 프로젝션 최적화

select DocumentData.query(
'<object type="dynamic"> 
    <state> 
     <OrderTotal type="decimal"> 
      {fn:sum( 
       for $A in /object[1]/state[1]/OrderDetails[1]/object/state[1] 
       return ($A/ItemPrice[1] * $A/Quantity[1]))}  
     </OrderTotal> 
     <CustomerId type="guid"> 
      {xs:string(/object[1]/state[1]/CustomerId[1])} 
     </CustomerId> 
     <Details type="collection"> 
      {/object[1]/state[1]/OrderDetails[1]/object} 
     </Details> 
    </state> 
</object>') as DocumentData 
from documents 

에 대해 10+ 일이 벌어 조인이,이 코드의 executionplan을 선택하면

(I 코드는 문맥 조금 알고). 구조의 각 수준에 대해 $ var에 사용하도록 이것을 중단해야합니까?

더 컨텍스트를 들어

, 이것은 내가 달성하기 위해 노력하고있어입니다 : 내가 작품 매력을 필터링는 "Linq에 XQuery를에 번역기"/ NoSQL에 문서 DB 에뮬레이터를 쓰고 있어요 http://rogeralsing.com/2011/03/02/linq-to-sqlxml-projections/

을, 전망은 고통 perf 문제.

+0

http://msdn.microsoft.com/en-us/lib rary/ms187508 % 28SQL.90 % 29.aspx –

+0

XML 인덱스가 있습니까? –

+0

Yepp, 인덱스가 위치에 있으며, 값/경로/속성 및 기본. xquery 프로젝션이 끔찍한 것처럼 보입니다. –

답변