1
이전 저장 프로 시저의 성능 향상과 함께 작업하고 있습니다. 현재 단일 노드 XML 매개 변수가 다른 저장 프로 시저에서 전달됩니다. 그러면 XML이 교차 적용에 사용됩니다. CROSS APPY의 X-Query가 행별로 값을 추출하는지 아니면 미리 구문 분석되는지 궁금합니다. 나 XML전달 XML 대 전달 사용자 정의 형식
이 대신 UDT로 목록을 통과하는 것이 적은 오버 헤드 있을까하는 것은 여기에 XML을
SELECT @NewRunBatchProcessSteps = (
SELECT Tracking.NewPrimaryKey RunBatchProcessStepId
FROM @RunBatchProcessStep AS RunBatchProcessStep
INNER JOIN @RunBatchProcessNew Tracking ON RunBatchProcessStep.RunBatchProcessStepId = Tracking.OldPrimaryKey
FOR XML PATH('RunBatchProcessStep'), ROOT ('RunBatchProcessSteps')
)
를 생성이 사용되는 방법은 코드입니다.
SELECT SomeFields
FROM RunBatchProcessStep
CROSS APPLY @NewRunBatchProcessSteps.nodes('/RunBatchProcessSteps/RunBatchProcessStep') RunBatchProcessStepsXML(ref)
INNER JOIN BatchProcessStep btp ON RunBatchProcessStep.BatchProcessStepId = btp.BatchProcessStepId
INNER JOIN Module m ON m.ModuleCode = btp.ModuleCode
WHERE RunBatchProcessStep.RunBatchProcessStepId = ref.value('RunBatchProcessStepId[1]', 'INT')
나는 @NewRunBatchProcessSteps을 가지고 하나의 열 UDT로 돌려했다 후 내부 내가 성능 향상을 볼 수, 그것에 가입하면?
그냥 시도해보십시오. – RBarryYoung
그러나 * 일반적으로 * 예, 일련의 값을 사용자 정의 테이블 형식으로 전달하는 것이 XML보다 효율적이어야합니다. 그러나 마일리지는 상황에 따라 다를 수 있습니다. – RBarryYoung
감사합니다. 나는 UDT와 함께 작동하는 버전을 만들고있다. 서로 다른 환경의 데이터가 너무 다르기 때문에 동일한 실행 계획을 거의 공유하지 않습니다. 그래서 당신의 "일반적으로"코멘트는 제가 찾고있는 것입니다. 나는 그것을 시도할만한 가치가 있는지 높은 수준에서 알고 싶었다. 감사! –