XML 유형의 주요 이점 중 하나는 VARBINARY(MAX)
사용자가 보는 정확한 문자열 표현을 저장하지 않고 대신 요소 및 속성 이름의 사전을 가지며 참조 하는 고도로 최적화 된 형식 ( @Oleg의 답변에 명시되어 있지 않음)으로 저장된다는 것입니다 그들의 ID로 그들에게. 또한 공백을 제거합니다. 다음을 시도하십시오 :
DECLARE @Test1 XML = N'<Test><TagName>1</TagName><TagName>2</TagName></Test>';
DECLARE @String1 NVARCHAR(MAX) = CONVERT(NVARCHAR(MAX), @Test1);
SELECT DATALENGTH(@Test1) AS [XmlBytes],
LEN(@String1) AS [StringCharacters],
DATALENGTH(@String1) AS [StringBytes];
SET @Test1 = N'<Test><TagName>1</TagName><TagName>2</TagName><TagName>3</TagName>
<TagName>4</TagName><TagName>5</TagName><TagName>6</TagName></Test>';
SET @String1 = CONVERT(NVARCHAR(MAX), @Test1);
SELECT DATALENGTH(@Test1) AS [XmlBytes],
LEN(@String1) AS [StringCharacters],
DATALENGTH(@String1) AS [StringBytes];
보고:
XmlBytes StringCharacters StringBytes
56 53 106
XmlBytes StringCharacters StringBytes
84 133 266
위의 예제 출력에서 볼 수 있듯이 4 개의 요소 (#s 3, 4, 5 및 6)를 추가하면 80 자 (따라서 80 바이트 VARCHAR
)와 160 바이트가 NVARCHAR
변수에 추가됩니다. 그러나, 그것은 단지 인 XML 변수, 28 바이트를 추가 적은 이 추가보다 VARCHAR
(다만 만일 누군가가 찬성 주장 거라고 VARCHAR
이상 XML
때문에 XML
UTF-16 [주로] 더블 바이트입니다). 이 최적화는 많은 공간을 절약 할 수 있으며 XML
데이터 유형 을 사용하기에 충분한 이유 입니다.