CREATE XML INDEX(Transact-SQL)

 

이 항목은 다음에 적용됩니다.예SQL Server(2008부터 시작)예Azure SQL 데이터베이스아니요Azure SQL 데이터 웨어하우스아니요병렬 데이터 웨어하우스

지정된 테이블에 XML 인덱스를 만듭니다. 인덱스는 테이블에 데이터를 넣기 전에 만들 수 있습니다. 정규화된 데이터베이스 이름을 지정하여 다른 데이터베이스에 있는 테이블에 XML 인덱스를 만들 수도 있습니다.

System_CAPS_ICON_note.jpg 참고


관계형 인덱스를 만들려면 참조 CREATE INDEX (TRANSACT-SQL)합니다. 공간 인덱스를 만드는 방법에 대 한 정보를 참조 하십시오. CREATE SPATIAL INDEX (TRANSACT-SQL)합니다.

Topic link icon Transact-SQL 구문 표기 규칙

  
Create XML Index   
CREATE [ PRIMARY ] XML INDEX index_name   
    ON <object> ( xml_column_name )  
    [ USING XML INDEX xml_index_name   
        [ FOR { VALUE | PATH | PROPERTY } ] ]  
    [ WITH ( <xml_index_option> [ ,...n ] ) ]  
[ ; ]  
  
<object> ::=  
{  
    [ database_name. [ schema_name ] . | schema_name. ]   
    table_name  
}  
  
<xml_index_option> ::=  
{   
    PAD_INDEX  = { ON | OFF }  
  | FILLFACTOR = fillfactor  
  | SORT_IN_TEMPDB = { ON | OFF }  
  | IGNORE_DUP_KEY = OFF  
  | DROP_EXISTING = { ON | OFF }  
  | ONLINE = OFF  
  | ALLOW_ROW_LOCKS = { ON | OFF }  
  | ALLOW_PAGE_LOCKS = { ON | OFF }  
  | MAXDOP = max_degree_of_parallelism  
}  
  

[PRIMARY] XML
지정 된 XML 인덱스를 만듭니다 xml 열입니다. PRIMARY를 지정한 경우 사용자 테이블의 클러스터링 키 및 XML 노드 식별자로 구성된 클러스터형 키를 사용하여 클러스터형 인덱스가 만들어집니다. 각 테이블에는 최대 249개의 XML 인덱스가 있을 수 있습니다. XML 인덱스를 만들 때는 다음 사항을 알아야 합니다.

  • 클러스터형 인덱스는 사용자 테이블의 기본 키에 있어야 합니다.

  • 사용자 테이블의 클러스터링 키는 15개의 열로 제한됩니다.

  • xml 테이블의 열에에서는 하나의 기본 XML 인덱스 및 여러 개의 보조 XML 인덱스가 있을 수 있습니다.

  • 에 기본 XML 인덱스는 xml 열에 보조 XML 인덱스를 만들기 전에 열이 있어야 합니다.

  • XML 인덱스는 단일에서 만들 수 있습니다 xml 열입니다. 비 XML 인덱스를 만들 수 없습니다xml 에 관계형 인덱스를 만들 열에도 수는 xml 열입니다.

  • 에 주 또는 보조 XML 인덱스를 만들 수 없습니다는 xml 보기를 사용 하 여 테이블 반환 변수에서 열 xml 열 또는 xml 변수를 입력 합니다.

  • 계산에 기본 XML 인덱스를 만들 수 없습니다 xml 열입니다.

  • SET 옵션 설정은 인덱싱된 뷰 및 계산 열 인덱스에 필요한 설정과 같아야 합니다. 특히, ARITHABORT 옵션으로 설정 되어 있어야 ON XML 인덱스를 만들 때 및의 값이 삽입, 삭제 또는 업데이트 될 때의 xml 열입니다.

자세한 내용은 XML 인덱스(SQL Server)를 참조하세요.

index_name
인덱스의 이름입니다. 인덱스 이름은 테이블에서 고유해야 하지만 데이터베이스 내에서 고유할 필요는 없습니다. 인덱스 이름은의 규칙을 준수 해야 식별자합니다.

기본 XML 인덱스 이름은 문자로 시작할 수 없습니다: ** # **, ** ## **, ** @ **, 또는 ** @@ **합니다.

xml_column_name
xml 인덱스의 기반이 되는 열입니다. 하나의 xml 단일 XML 인덱스 정의에서 열을 지정할 수 있습니다; 반면에 여러 개의 보조 XML 인덱스를 만들 수 있습니다는 xml 열입니다.

XML 인덱스를 사용 하 여 xml_index_name
보조 XML 인덱스를 만들 때 사용할 기본 XML 인덱스를 지정합니다.

FOR { VALUE | PATH | PROPERTY }
보조 XML 인덱스의 유형을 지정합니다.


키 열이 기본 XML 인덱스의 노드 값 및 경로인 열에 보조 XML 인덱스를 만듭니다.

PATH
기본 XML 인덱스의 경로 값 및 노드 값에 작성된 열에 보조 XML 인덱스를 만듭니다. PATH 보조 인덱스에서 경로 값 및 노드 값은 경로 검색 시 효율적으로 검색할 수 있는 키 열입니다.

PROPERTY
PK가 기본 테이블의 기본 키인 기본 XML 인덱스의 열(PK, 경로 및 노드 값)에 보조 XML 인덱스를 만듭니다.

<>>::=

인덱스할 정규화되거나 정규화되지 않은 개체입니다.

a s e _
데이터베이스의 이름입니다.

schema_name
테이블이 속한 스키마의 이름입니다.

table_name
인덱싱할 테이블 이름입니다.

<xml_index_option>::=</xml_index_option>

인덱스를 만들 때 사용할 옵션을 지정합니다.

PAD_INDEX = { ON | OFF }
인덱스 패딩을 지정합니다. 기본값은 OFF입니다.

ON
지정 된 여유 공간의 백분율 fillfactor 인덱스의 중간 수준 페이지에 적용 됩니다.

OFF 또는 fillfactor 지정 하지 않으면
중간 수준 페이지는 중간 페이지의 키 집합을 고려하며 인덱스가 가질 수 있는 최대 크기의 한 행에 필요한 공간을 충분히 남기고 용량을 거의 채웁니다.

PAD_INDEX는 FILLFACTOR에 지정된 비율을 사용하므로 FILLFACTOR가 지정된 경우에만 PAD_INDEX 옵션을 사용할 수 있습니다. FILLFACTOR에 지정된 비율이 한 행을 저장하기에도 부족하면 데이터베이스 엔진은 내부적으로 허용된 최소 비율을 무시합니다. 중간 인덱스 페이지의 행이 수는 두 개 이상, 아무리 값에 관계 없이 fillfactor합니다.

FILLFACTOR ** = ** fillfactor
인덱스를 만들거나 다시 작성할 때 데이터베이스 엔진에서 각 인덱스 페이지의 리프 수준을 채우는 비율을 지정합니다. fillfactor 1에서 100으로 정수 값 이어야 합니다. 기본값은 0입니다. 경우 fillfactor 가 100 또는 0 이면는 데이터베이스 엔진 리프 페이지가 꽉 채워짐을 인덱스를 만듭니다.

System_CAPS_ICON_note.jpg 참고


채우기 비율 값 0과 100은 모든 면에서 동일합니다.

FILLFACTOR 설정은 인덱스를 만들거나 다시 작성하는 경우에만 적용됩니다. 데이터베이스 엔진에서는 페이지에 지정된 비율의 빈 공간을 동적으로 유지하지 않습니다. 채우기 비율 설정을 보려면 사용은 sys.indexes 카탈로그 뷰를 사용 합니다.

System_CAPS_ICON_important.jpg 중요


데이터베이스 엔진은 클러스터형 인덱스를 만들 때 데이터를 다시 배포하므로 FILLFACTOR가 100 미만인 클러스터형 인덱스를 만들면 데이터가 차지하는 저장 공간 크기에 영향을 줍니다.

자세한 내용은 인덱스의 채우기 비율 지정을 참조하세요.

SORT_IN_TEMPDB ** = ** {ON | OFF }
에 임시 정렬 결과 저장할지 여부를 지정 tempdb합니다. 기본값은 OFF입니다.

ON
인덱스를 작성 하는 데 사용 되는 중간 정렬 결과에 저장 됩니다 tempdb합니다. 이 경우 인덱스를 만드는 데 필요한 시간을 줄일 수 있습니다 tempdb 가 사용자 데이터베이스는 디스크의 다른 집합에 있습니다. 그러나 인덱스 작성 중에 사용되는 디스크 공간의 크기는 커집니다.

OFF
중간 정렬 결과가 인덱스와 같은 데이터베이스에 저장됩니다.

인덱스를 만드는 데는 사용자 데이터베이스에 필요한 공간 외에도 tempdb 추가 공간 중간 정렬 결과를 저장할 정도의 동일한 있어야 합니다. 자세한 내용은 참조 SORT_IN_TEMPDB 옵션에 대 한 인덱스합니다.

IGNORE_DUP_KEY = OFF
인덱스 유형은 고유할 수 없으므로 XML 인덱스에 영향을 미치지 않습니다. 이 옵션을 ON으로 설정하지 마세요. ON으로 설정하면 오류가 발생합니다.

DROP_EXISTING ** = ** {ON | OFF }
명명된 기존 XML 인덱스를 삭제하고 다시 작성하도록 지정합니다. 기본값은 OFF입니다.

ON
기존 인덱스가 삭제되고 다시 작성됩니다. 지정된 인덱스 이름은 현재 존재하는 인덱스 이름과 같아야 합니다. 그러나 인덱스 정의는 수정할 수 있습니다. 예를 들어 다른 열, 정렬 순서, 파티션 구성표 또는 인덱스 옵션을 지정할 수 있습니다.

OFF
지정된 인덱스 이름이 이미 존재하는 경우 오류가 표시됩니다.

인덱스 유형은 DROP_EXISTING을 사용하여 변경할 수 없습니다. 또한 기본 XML 인덱스는 보조 XML 인덱스로 다시 정의할 수 없으며 반대인 경우도 마찬가지입니다.

온라인 = OFF
인덱스 작업 중에 쿼리 및 데이터 수정에 기본 테이블 및 관련 인덱스를 사용할 수 없도록 지정합니다. 이 SQL Server 버전에서는 XML 인덱스에 대해 온라인 인덱스 작성이 지원되지 않습니다. 이 옵션이 XML 인덱스에 대해 ON으로 설정되어 있으면 오류가 발생합니다. ONLINE 옵션을 생략하거나 ONLINE을 OFF로 설정하세요.

XML 인덱스를 작성, 다시 작성 또는 삭제하는 오프라인 인덱스 작업은 테이블에 대해 SCH-M(스키마 수정) 잠금을 획득합니다. 이 경우 작업 중에 모든 사용자가 기본 테이블에 액세스할 수 없게 됩니다.

System_CAPS_ICON_note.jpg 참고


온라인 인덱스 작업은 일부 MicrosoftSQL Server 버전에서 사용할 수 있습니다. SQL Server 버전에서 지원되는 기능 목록은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요.

ALLOW_ROW_LOCKS = { ON | OFF}
행 잠금의 허용 여부를 지정합니다. 기본값은 ON입니다.

ON
인덱스에 액세스할 때 행 잠금이 허용됩니다. 행 잠금을 사용하는 시점은 데이터베이스 엔진이 결정합니다.

OFF
행 잠금이 사용되지 않습니다.

ALLOW_PAGE_LOCKS = { ON | OFF}
페이지 잠금의 허용 여부를 지정합니다. 기본값은 ON입니다.

ON
인덱스에 액세스할 때 페이지 잠금이 허용됩니다. 페이지 잠금을 사용하는 시점은 데이터베이스 엔진이 결정합니다.

OFF
페이지 잠금이 사용되지 않습니다.

MAXDOP ** = ** max_degree_of_parallelism
재정의 max degree of parallelism 서버 구성 옵션 구성 인덱스 작업의 기간에 대 한 구성 옵션입니다. MAXDOP를 사용하여 병렬 계획 실행에 사용되는 프로세서 수를 제한할 수 있습니다. 최대값은 64개입니다.

System_CAPS_ICON_important.jpg 중요


MAXDOP 옵션은 모든 XML 인덱스에 대해 구문으로는 지원되지만 기본 XML 인덱스의 경우 CREATE XML INDEX는 단일 프로세서만 사용합니다.

max_degree_of_parallelism 될 수 있습니다.

1
병렬 계획이 생성되지 않습니다.

>1
병렬 인덱스 작업에 사용되는 최대 프로세서 수를 현재 시스템 작업에 따라 지정된 수 또는 더 적은 수로 제한합니다.

0(기본값)
현재 시스템 작업에 따라 실제 프로세서 수 이하의 프로세서를 사용합니다.

자세한 내용은 병렬 인덱스 작업 구성을 참조하세요.

System_CAPS_ICON_note.jpg 참고


병렬 인덱스 작업의 모든 버전에서 사용할 수 없는 Microsoft SQL Server합니다. SQL Server 버전에서 지원되는 기능 목록은 SQL Server 2016 버전에서 지원하는 기능을 참조하세요.

계산 열에서 파생 된 xml 데이터 형식을 수 인덱싱될 키 또는 키가 아닌 열을 인덱스 키 열 또는 키가 아닌 열은 계산된 열 데이터 형식이 허용 되는 그대로입니다. 계산에 기본 XML 인덱스를 만들 수 없습니다 xml 열입니다.

XML 인덱스에 대 한 정보를 보려면 사용 하 여는 sys.xml_indexes 카탈로그 뷰를 사용 합니다.

XML 인덱스에 대 한 자세한 내용은 참조 XML 인덱스 (SQL Server)합니다.

인덱스 생성에 대 한 자세한 내용은의 "주의" 섹션을 참조 하십시오. CREATE INDEX (TRANSACT-SQL)합니다.

1. 기본 XML 인덱스 만들기

다음 예에서는 CatalogDescription 테이블의 Production.ProductModel 열에 기본 XML 인덱스를 만듭니다.

USE AdventureWorks2012;  
GO  
IF EXISTS (SELECT * FROM sys.indexes  
            WHERE name = N'PXML_ProductModel_CatalogDescription')  
    DROP INDEX PXML_ProductModel_CatalogDescription   
        ON Production.ProductModel;  
GO  
CREATE PRIMARY XML INDEX PXML_ProductModel_CatalogDescription  
    ON Production.ProductModel (CatalogDescription);  
GO  

2. 보조 XML 인덱스 만들기

다음 예에서는 CatalogDescription 테이블의 Production.ProductModel 열에 보조 XML 인덱스를 만듭니다.

USE AdventureWorks2012;  
GO  
IF EXISTS (SELECT name FROM sys.indexes  
            WHERE name = N'IXML_ProductModel_CatalogDescription_Path')  
    DROP INDEX IXML_ProductModel_CatalogDescription_Path  
        ON Production.ProductModel;  
GO  
CREATE XML INDEX IXML_ProductModel_CatalogDescription_Path   
    ON Production.ProductModel (CatalogDescription)  
    USING XML INDEX PXML_ProductModel_CatalogDescription FOR PATH ;  
GO  

ALTER INDEX (TRANSACT-SQL)
CREATE INDEX (TRANSACT-SQL)
파티션 함수 (TRANSACT-SQL) 만들기
파티션 구성표 (TRANSACT-SQL) 만들기
CREATE SPATIAL INDEX (TRANSACT-SQL)
만들 통계 (TRANSACT-SQL)
테이블 (TRANSACT-SQL) 만들기
데이터 형식 (TRANSACT-SQL)
DBCC SHOW_STATISTICS (TRANSACT-SQL)
DROP INDEX (TRANSACT-SQL)
XML 인덱스 (SQL Server)
sys.indexes (TRANSACT-SQL)
sys.index_columns (Transact SQL)
sys.xml_indexes (TRANSACT-SQL)
EVENTDATA (TRANSACT-SQL)
XML 인덱스 (SQL Server)

커뮤니티 추가 항목

추가
표시: