XML-Indizes ablegen
Gilt für:SQL ServerAzure SQL-DatenbankAzure SQL Managed Instance
Die DROP INDEX (Transact-SQL)Transact-SQL-Anweisung kann verwendet werden, um vorhandene primäre oder sekundäre XML- und nicht-XML-Indizes abzulegen. Die DROP INDEX-Optionen gelten jedoch nicht für XML-Indizes. Wenn Sie den primären XML-Index löschen, werden sämtliche vorhandenen sekundären Indizes ebenfalls gelöscht.
Die DROP-Syntax mit TableName.IndexName wird schrittweise beendet und wird für XML-Indizes nicht unterstützt.
Beispiel: Erstellen und Ablegen eines primären XML-Indexes
Im folgenden Beispiel wird ein XML-Index für eine Spalte vom Typ xml erstellt:
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;
GO
Beim Löschen einer Tabelle werden auch XML-Indizes für diese automatisch gelöscht. Eine XML-Spalte kann jedoch nicht aus einer Tabelle gelöscht werden, wenn in der Spalte ein XML-Index vorhanden ist.
Im folgenden Beispiel wird ein XML-Index für eine Spalte vom Typ xml erstellt: Weitere Informationen finden Sie unter Vergleichen von typisiertem XML mit nicht typisiertem XML.
CREATE TABLE TestTable(
Col1 int primary key,
Col2 xml (Production.ProductDescriptionSchemaCollection));
GO
Nun können Sie einen primären XML-Index für Co12
erstellen:
CREATE PRIMARY XML INDEX PIdx_TestTable_Col2
ON TestTable(Col2)
GO
Beispiel: Erstellen eines XML-Indexes mithilfe der Indexoption DROP_EXISTING
Im folgenden Beispiel wird in einer Spalte XmlColx
ein XML-Index erstellt. Anschließend wird ein weiterer XML-Index mit demselben Namen in einer anderen Spalte XmlColy
erstellt. Da die DROP_EXISTING
Option angegeben ist, wird der vorhandene XML-Index XmlColx
abgelegt und ein neuer XML-Index XmlColy
erstellt.
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');
Diese Abfrage gibt den Spaltennamen zurück, für den der angegebene XML-Index erstellt wird.
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für