Descartando índices XML
A instrução DROP INDEX (Transact-SQL)Transact-SQL pode ser usada para descartar índices primários ou secundários XML e não-XML existentes. No entanto nenhuma opção de DROP INDEX se aplica a índices XML. Se você descartar o índice XML primário, qualquer índice secundário que estiver presente também será excluído.
A sintaxe de DROP com TableName.IndexName está sendo desativada e não tem suporte para índices XML.
Exemplo: Criando e descartando um índice XML primário
No exemplo a seguir, um índice XML é criado em um tipo de coluna 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
Quando uma tabela é descartada, todos os índices XML que ela contém também são descartados automaticamente. No entanto uma coluna XML não poderá ser descartada de uma tabela se existir um índice XML na coluna.
No exemplo a seguir, um índice XML é criado em um tipo de coluna xml. Para obter mais informações, consulte XML digitado comparado com XML não digitado.
CREATE TABLE TestTable(
Col1 int primary key,
Col2 xml (Production.ProductDescriptionSchemaCollection))
GO
Agora, é possível criar um índice de XML primário na Co12.
CREATE PRIMARY XML INDEX PIdx_TestTable_Col2
ON TestTable(Col2)
GO
Exemplo: Criando um índice XML usando a opção de índice DROP_EXISTING
No exemplo a seguir, um índice XML é criado em uma coluna (XmlColx). Em seguida, outro índice XML com o mesmo nome é criado em uma coluna diferente (XmlColy). Como a opção DROP_EXISTING está especificada, o índice XML existente em (XmlColx)) é descartado e um novo índice XML em (XmlColy) é criado.
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')
Essa consulta retorna o nome da coluna na qual o índice XML especificado é criado.