Udostępnij za pośrednictwem


Dropping XML Indexes

The DROP INDEX (języka Transact-SQL)Transact-SQL statement can be used to drop existing primary or secondary XML and non-XML indexes.Jednak dostępne żadne opcje DROP indeks dotyczą indeksów XML.Jeśli upuścisz indeksu głównego XML żadnych indeksów pomocniczych obecne są również usuwane.

Składnia DROP z TableName.IndexName to jest zniesione i nie jest obsługiwana dla indeksów XML.

Przykład: Tworzenie i upuszczając indeks podstawowy XML

W poniższym przykładzie utworzono indeks XML xml Typ kolumna.

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

Po upuszczeniu tabela indeksów XML na nim są również automatycznie usuwane.Jednak to kolumna XML nie można go usunąć z tabela, jeśli w kolumnie istnieje indeks XML.

W poniższym przykładzie utworzono indeks XML xml Typ kolumna. Aby uzyskać więcej informacji zobaczTyped XML Compared to Untyped XML.

CREATE TABLE TestTable(
 Col1 int primary key, 
 Col2 xml (Production.ProductDescriptionSchemaCollection)) 
GO

Teraz można utworzyć indeksu głównego XML na Co12.

CREATE PRIMARY XML INDEX PIdx_TestTable_Col2 
ON TestTable(Col2)
GO

Przykład: Tworzenie indeksu XML przy użyciu opcji indeks DROP_EXISTING

W poniższym przykładzie jest tworzony indeks XML na (kolumnaXmlColx). Następnie indeks XML o tej samej nazwie jest tworzony na innej kolumna)XmlColy). Ponieważ DROP_EXISTING Określona opcja, istniejące XML indeksowania na)XmlColx) zostanie usunięte i nowy indeks XML na ()XmlColy) jest tworzona.

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')

Ta kwerenda zwraca nazwę kolumna, na którym tworzony jest określony indeks XML.