XML 데이터 형식 열의 인덱스
XML 인덱스를 xml 데이터 형식의 열에 만들 수 있습니다. 그러면 열에 있는 XML 인스턴스에 대해 모든 태그, 값 및 경로가 인덱싱되어 쿼리 성능이 향상됩니다. 다음 경우에 응용 프로그램에서 XML 인덱스를 활용할 수 있습니다.
XML 열의 쿼리가 작업에서 일반적입니다. 데이터를 수정하는 동안 XML 인덱스 유지 관리 비용이 고려되어야 합니다.
XML 값이 비교적 크며 검색된 부분은 비교적 작습니다. 인덱스를 작성하면 런타임 시 전체 데이터의 구문 분석이 방지되므로 인덱스 조회를 통해 쿼리를 효율적으로 처리할 수 있습니다.
XML 인덱스는 다음 범주로 구분됩니다.
기본 XML 인덱스
보조 XML 인덱스
xml 형식 열의 첫 번째 인덱스는 기본 XML 인덱스여야 합니다. 기본 XML 인덱스를 사용하면 PATH, VALUE 및 PROPERTY 형식의 보조 인덱스가 지원됩니다. 이러한 보조 인덱스는 쿼리 유형에 따라 쿼리 성능을 향상시킬 수 있습니다.
[!참고]
데이터베이스 옵션이 xml 데이터 형식 작업에 대해 제대로 설정되지 않을 경우 XML 인덱스를 만들거나 수정할 수 없습니다. 자세한 내용은 XML 열의 전체 텍스트 인덱스를 참조하십시오.
XML 인스턴스는 BLOB(Binary Large Object)으로 xml 형식 열에 저장되어 있습니다. 이러한 XML 인스턴스는 크기가 클 수 있으며 xml 데이터 형식 인스턴스의 저장된 이진 표현은 최대 2GB까지 될 수 있습니다. 이러한 BLOB은 인덱스 없이 런타임 시 단편화되어 쿼리를 계산할 수 있습니다. 이 단편화 작업에는 시간이 많이 걸릴 수 있습니다. 예를 들어 다음 쿼리를 참조하십시오.
WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS "PD")
SELECT CatalogDescription.query('
/PD:ProductDescription/PD:Summary
') as Result
FROM Production.ProductModel
WHERE CatalogDescription.exist ('/PD:ProductDescription/@ProductModelID[.="19"]') = 1
WHERE 절의 조건에 맞는 XML 인스턴스를 선택할 수 있도록 Production.ProductModel 테이블의 각 행에서 XML BLOB이 런타임 시 단편화됩니다. 그런 다음 exist() 메서드의 (/PD:ProductDescription/@ProductModelID[.="19"]) 식이 계산됩니다. 이러한 런타임 단편화는 열에 저장된 인스턴스의 크기와 수에 따라 비용이 많이 들 수 있습니다.
XML BLOB을 쿼리하는 것이 사용자의 응용 프로그램 환경에서 일반적인 경우 이것은 xml 형식 열을 인덱싱하는 데 도움이 됩니다. 그러나 데이터 수정 중 인덱스를 유지 관리하는 비용이 듭니다.
섹션 내용
항목 |
설명 |
---|---|
기본 XML 인덱스와 이 인덱스의 행에 대해 설명합니다. |
|
세 가지 유형의 보조 XML 인덱스에 대해 설명합니다. |
|
기본 및 보조 XML 인덱스를 만드는 방법에 대해 설명합니다. |
|
ALTER INDEX 문을 사용하여 XML 인덱스를 수정하는 방법에 대해 설명합니다. |
|
DROP INDEX 문을 사용하여 인덱스를 삭제하는 방법에 대해 설명합니다. |
|
XML 열에 전체 텍스트 인덱스를 만드는 방법에 대해 설명합니다. |