XML 인덱스 삭제
DROP INDEX(Transact-SQL) Transact-SQL 문을 사용하여 기존 기본 또는 보조 XML 인덱스 및 비-XML 인덱스를 삭제할 수 있습니다. 그러나 DROP INDEX의 옵션은 XML 인덱스에 적용되지 않습니다. 기본 XML 인덱스를 삭제하려면 존재하는 보조 인덱스도 모두 삭제됩니다.
TableName.IndexName이 있는 DROP 구문은 단계적으로 제거하며 XML 인덱스에 대해서는 지원되지 않습니다.
예: 기본 XML 인덱스 만들기 및 삭제
다음 예에서는 XML 인덱스가 xml 유형 열에 생성됩니다.
DROP TABLE T
GO
CREATE TABLE T (Col1 INT PRIMARY KEY, XmlCol XML)
GO
-- Create Primary XML index
CREATE PRIMARY XML INDEX PIdx_T_XmlCol
ON T(XmlCol)
GO
-- Verify the index creation.
-- Note index type is 3 for xml indexes.
-- Note the type 3 is index on XML type.
SELECT *
FROM sys.xml_indexes
WHERE object_id = object_id('T')
AND name='PIdx_T_XmlCol'
-- Drop the index.
DROP INDEX PIdx_T_XmlCol ON T
테이블이 삭제될 때 그 테이블의 모든 XML 인덱스도 자동으로 삭제됩니다. 그러나 XML 인덱스가 열에 있는 경우 XML 열은 테이블에서 삭제할 수 없습니다.
다음 예에서는 XML 인덱스가 xml 유형 열에 생성됩니다. 자세한 내용은 형식화된 XML과 형식화되지 않은 XML을 참조하십시오.
CREATE TABLE TestTable(
Col1 int primary key,
Col2 xml (Production.ProductDescriptionSchemaCollection))
GO
이제 Co12에 기본 XML 인덱스를 만들 수 있습니다.
CREATE PRIMARY XML INDEX PIdx_TestTable_Col2
ON TestTable(Col2)
GO
예: DROP_EXISTING 인덱스 옵션을 사용하여 XML 인덱스 만들기
다음 예에서는 XML 인덱스가 XmlColx 열에 생성됩니다. 그런 다음 같은 이름으로 된 다른 XML 인덱스가 다른 열 XmlColy에 생성됩니다. DROP_EXISTING 옵션이 지정되어 있으므로 (XmlColx)의 기존 XML 인덱스가 삭제되고 (XmlColy)의 새 XML 인덱스가 생성됩니다.
DROP TABLE T
GO
CREATE TABLE T(Col1 int primary key, XmlColx xml, XmlColy xml)
GO
-- Create XML index on XmlColx.
CREATE PRIMARY XML INDEX PIdx_T_XmlCol
ON T(XmlColx)
GO
-- Create same name XML index on XmlColy.
CREATE PRIMARY XML INDEX PIdx_T_XmlCol
ON T(XmlColy)
WITH (DROP_EXISTING = ON)
-- Verify the index is created on XmlColy.d.
SELECT sc.name
FROM sys.xml_indexes si inner join sys.index_columns sic
ON sic.object_id=si.object_id and sic.index_id=si.index_id
INNER join sys.columns sc on sc.object_id=sic.object_id
AND sc.column_id=sic.column_id
WHERE si.name='PIdx_T_XmlCol'
AND si.object_id=object_id('T')
이 쿼리에서는 지정된 XML 인덱스가 생성된 열 이름을 반환합니다.