저장 프로 시저에서 작업 중입니다. 보기를 사용하고 결과 집합 테이블을 XML 형식으로 변환합니다. 'FOR XML AUTO, ROOT ('toxicsite '), TYPE'문을 사용했습니다. 뷰가 14k 레코드를 반환하고 XML로 변환 된 후 ... 2 분이 소요됩니다. 다른 대안에 대한 도움이 필요하십니까 또는 어떻게 쿼리를 최적화 할 수 있습니까?FOR XML AUTO, ROOT ('RootName'), 14K 레코드의 TYPE을 사용하면 SQL 쿼리가 느려집니다.
0
A
답변
0
방금 SELECT TOP 14000 * FROM SomeBigTable
으로 시도했습니다. SSMS는 2 초 후에 준비됩니다. FOR XML AUTO
으로 꽤 빠른 속도로 돌아옵니다. 나는 XML을 만드는 것이 오랜 시간이 걸릴 것이라고 생각하지 않는다.
VIEW
이 매우 복잡하다면, AUTO
이 당신을 속일 수있다. AUTO
는 쿼리 (관련 데이터의 중첩을) 그냥 성능 차이를 확인 FOR XML RAW,TYPE
을 시도 할 수빠른 슛으로
에 대한 적절한 내부 구조를 찾습니다. 가장 좋은 것은 FOR XML PATH
의 명시적인 접근 방식으로 중첩 및 관계를 직접 지정할 수 있습니다. 관련된 많은 문자열이있는 경우
(VARBINARY
데이터)를 포함 BLOB를이있는 경우, 당신은 그들이 비 라틴 문자를 많이 가지고 특히, base64
이 변환의 추가 비용을 가지고, 당신은 여분이 엔티티 인코딩 비용 ... 일반적으로 XML에서
이 놀랄만큼 빠르고 ...
그냥 제대로 내용 : 쿼리는 XML'가 충분히 빠르지 만 FOR 때 당신이 그것을 XML'위한'추가'없이 실행 느린가? 시간은 어때? XML을 가지고 무엇을하고 있습니까? 14k 레코드는 상당히 많습니다. XML은 더 큰 데이터를 위해 설계되지 않았습니다 ... – Shnugo
예 ...보기에서 데이터를 가져 오는 경우 17 초 (14k 레코드)로 돌아옵니다. 그러나 ForXML을 적용하면 ...이 요구 사항을 XML로 보냅니다. 추가 처리. –