XML-Indizes (SQL Server)XML Indexes (SQL Server)

XML-Indizes können für xml -Datentypspalten erstellt werden.XML indexes can be created on xml data type columns. Sie indizieren alle Tags, Werte und Pfade für die XML-Instanzen in der Spalte. Die Indizierung verbessert zudem die Abfrageleistung.They index all tags, values and paths over the XML instances in the column and benefit query performance. Ihre Anwendung kann in folgenden Situationen von einem XML-Index profitieren:Your application may benefit from an XML index in the following situations:

  • In Ihren Arbeitsauslastungen sind Abfragen von XML-Spalten üblich.Queries on XML columns are common in your workload. Die Wartungskosten für den XML-Index während der Datenänderung müssen berücksichtigt werden.XML index maintenance cost during data modification must be considered.

  • Ihre XML-Werte sind relativ groß, und die abgerufenen Teile sind relativ klein.Your XML values are relatively large and the retrieved parts are relatively small. Mit dem Erstellen eines Index wird vermieden, dass zur Laufzeit die gesamten Daten analysiert werden müssen. Davon profitieren Indexsuchen und die Abfrageverarbeitung wird effizienter.Building the index avoids parsing the whole data at run time and benefits index lookups for efficient query processing.

    XML-Indizes fallen in die folgenden Kategorien:XML indexes fall into the following categories:

  • Primärer XML-IndexPrimary XML index

  • Sekundärer XML-IndexSecondary XML index

    Der erste Index für die Spalte des Datentyps xml muss der primäre XML-Index sein.The first index on the xml type column must be the primary XML index. Mithilfe des primären XML-Indexes werden drei Arten sekundärer Indizes unterstützt: PATH, VALUE und PROPERTY.Using the primary XML index, the following types of secondary indexes are supported: PATH, VALUE, and PROPERTY. Abhängig vom Typ der Abfragen können diese sekundären Indizes die Abfrageleistung steigern.Depending on the type of queries, these secondary indexes might help improve query performance.

Hinweis

Sie können einen XML-Index nur dann erstellen oder bearbeiten, wenn die Datenbankoptionen korrekt für die Arbeit mit dem xml -Datentyp festgelegt sind.You cannot create or modify an XML index unless the database options are set correctly for working with the xml data type. Weitere Informationen finden Sie unter Verwenden der Volltextsuche mit XML-Spalten.For more information, see Use Full-Text Search with XML Columns.

XML-Instanzen werden in Spalten vom Typ xml als BLOBs (Binary Large Objects) gespeichert.XML instances are stored in xml type columns as large binary objects (BLOBs). Diese XML-Instanzen können groß sein, und die gespeicherte binäre Darstellung von Instanzen vom Datentyp xml kann bis zu 2GB groß sein.These XML instances can be large, and the stored binary representation of xml data type instances can be up to 2 GB. Ohne Index werden diese BLOBs zur Laufzeit aufgeteilt, um eine Abfrage auszuwerten.Without an index, these binary large objects are shredded at run time to evaluate a query. Diese Aufteilung kann zeitaufwändig sein.This shredding can be time-consuming. Angenommen, beispielsweise liegt die folgende Abfrage vor:For example, consider the following query:

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS "PD")  

SELECT CatalogDescription.query('  
  /PD:ProductDescription/PD:Summary  
') as Result  
FROM Production.ProductModel  
WHERE CatalogDescription.exist ('/PD:ProductDescription/@ProductModelID[.="19"]') = 1  

Um die XML-Instanzen auszuwählen, die die Bedingung in der WHERE -Klausel erfüllen, wird der XML-BLOB (Binary Large Object) in jeder Zeile der Production.ProductModel -Tabelle zur Laufzeit aufgeteilt.To select the XML instances that satisfy the condition in the WHERE clause, the XML binary large object (BLOB) in each row of table Production.ProductModel is shredded at run time. Dann wird der Ausdruck (/PD:ProductDescription/@ProductModelID[.="19"]) in der exist() -Methode ausgewertet.Then, the expression (/PD:ProductDescription/@ProductModelID[.="19"]) in the exist() method is evaluated. Diese Aufteilung zur Laufzeit kann abhängig von der Größe und Anzahl der in der Spalte gespeicherten Instanzen kostenintensiv sein.This run-time shredding can be costly, depending on the size and number of instances stored in the column.

Wenn das Abfragen von XML-BLOBs in Ihrer Anwendungsumgebung häufig vorkommt, ist das Indizieren der Spalten des Datentyps xml hilfreich.If querying XML binary large objects (BLOBs) is common in your application environment, it helps to index the xml type columns. Das Verwalten des Indexes während der Datenänderung verursacht jedoch auch Kosten.However, there is a cost associated with maintaining the index during data modification.

Primärer XML-IndexPrimary XML Index

Der primäre XML-Index indiziert alle Tags, Werte und Pfade innerhalb der XML-Instanzen in einer XML-Spalte.The primary XML index indexes all tags, values, and paths within the XML instances in an XML column. Damit ein primärer XML-Index erstellt werden kann, muss die Tabelle, in der die XML-Spalte enthalten ist, einen gruppierten Index für den Primärschlüssel der Tabelle aufweisen.To create a primary XML index, the table in which the XML column occurs must have a clustered index on the primary key of the table. SQL ServerSQL Server verwendet diesen Primärschlüssel zum Korrelieren von Zeilen im primären XML-Index mit Zeilen in der Tabelle, in der die XML-Spalte enthalten ist. uses this primary key to correlate rows in the primary XML index with rows in the table that contains the XML column.

Der primäre XML-Index ist eine aufgeteilte und persistente Darstellung der XML-BLOBs in der xml -Datentypspalte.The primary XML index is a shredded and persisted representation of the XML BLOBs in the xml data type column. Für jeden XML-BLOB in der Spalte erstellt der Index mehrere Datenzeilen.For each XML binary large object (BLOB) in the column, the index creates several rows of data. Die Anzahl der Zeilen im Index entspricht ungefähr der Anzahl der Knoten im XML-BLOB.The number of rows in the index is approximately equal to the number of nodes in the XML binary large object. Wenn eine Abfrage die vollständige XML-Instanz abruft, stellt SQL ServerSQL Server die Instanz aus der XML-Spalte bereit.When a query retrieves the full XML instance, SQL ServerSQL Server provides the instance from the XML column. Abfragen innerhalb der XML-Instanzen verwenden den primären XML-Index und können Skalarwerte oder XML-Teilbäume zurückgeben, indem der Index selbst verwendet wird.Queries within XML instances use the primary XML index, and can return scalar values or XML subtrees by using the index itself.

Jede Zeile speichert die folgenden Knoteninformationen:Each row stores the following node information:

  • Tagname, z. B. einen Element- oder Attributnamen.Tag name such as an element or attribute name.

  • Knotenwert.Node value.

  • Knotentyp, z. B. Elementknoten, Attributknoten oder Textknoten.Node type such as an element node, attribute node, or text node.

  • Informationen zur Dokumentreihenfolge, die durch einen internen Knotenbezeichner dargestellt wird.Document order information, represented by an internal node identifier.

  • Pfad von jedem Knoten zum Stamm der XML-Struktur.Path from each node to the root of the XML tree. Diese Spalte wird in der Abfrage nach path-Ausdrücken durchsucht.This column is searched for path expressions in the query.

  • Primärschlüssel der Basistabelle.Primary key of the base table. Der Primärschlüssel der Basistabelle wird im primären XML-Index für den Rückwärtsjoin mit der Basistabelle dupliziert, und die maximale Anzahl von Spalten im Primärschlüssel der Basistabelle ist auf 15 beschränkt.The primary key of the base table is duplicated in the primary XML index for a back join with the base table, and the maximum number of columns in the primary key of the base table is limited to 15.

    Diese Knoteninformationen werden zum Auswerten und Erstellen der XML-Ergebnisse für eine angegebene Abfrage verwendet.This node information is used to evaluate and construct XML results for a specified query. Zu Optimierungszwecken werden der Tagname und die Knotentypinformationen als ganze Zahlen codiert; die Path-Spalte verwendet die gleiche Codierung.For optimization purposes, the tag name and the node type information are encoded as integer values, and the Path column uses the same encoding. Pfade werden außerdem in umgekehrter Reihenfolge gespeichert, damit eine Pfadzuordnung erfolgen kann, wenn nur das Pfadsuffix bekannt ist.Also, paths are stored in reverse order to allow matching paths when only the path suffix is known. Beispiel:For example:

  • //ContactRecord/PhoneNumber , wobei nur die beiden letzten Schritte bekannt sind.//ContactRecord/PhoneNumber where only the last two steps are known

    OROR

  • /Book/*/Title ; dabei wird das Platzhalterzeichen (*) in der Mitte des Ausdrucks angegeben./Book/*/Title where the wildcard character (*) is specified in the middle of the expression.

    Der Abfrageprozessor verwendet den primären XML-Index für Abfragen, die xml-Datentypmethoden beinhalten und entweder Skalarwerte oder die XML-Teilbäume vom primären Index selbst wiedergeben.The query processor uses the primary XML index for queries that involve xml Data Type Methods and returns either scalar values or the XML subtrees from the primary index itself. (Dieser Index speichert alle notwendigen Informationen, um die XML-Instanz zu rekonstruieren).(This index stores all the necessary information to reconstruct the XML instance.)

    Die folgende Abfrage gibt z.B. in der CatalogDescription-Spalte vom Typ xml gespeicherte Zusammenfassungsinformationen aus der ProductModel-Tabelle zurück.For example, the following query returns summary information stored in the CatalogDescriptionxml type column in the ProductModel table. Die Abfrage gibt <Summary>-Informationen nur für die Produktmodelle zurück, deren Katalogbeschreibung auch die <Features>-Beschreibung speichert.The query returns <Summary> information only for product models whose catalog description also stores the <Features> description.

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS "PD")SELECT CatalogDescription.query('  /PD:ProductDescription/PD:Summary') as ResultFROM Production.ProductModelWHERE CatalogDescription.exist ('/PD:ProductDescription/PD:Features') = 1  

Hinsichtlich des primären XML-Indexes werden die einzelnen XML-BLOB-Instanzen in der Basistabelle nicht aufgeteilt, sondern die Zeilen in dem Index, der dem jeweiligen XML-BLOB entspricht, werden sequenziell nach dem in der exist()-Methode angegebenen Ausdruck durchsucht.With regard to the primary XML index, instead of shredding each XML binary large object instance in the base table, the rows in the index that correspond to each XML binary large object are searched sequentially for the expression specified in the exist() method. Wenn der Pfad in der Path-Spalte im Index gefunden wird, wird das <Summary>-Element mit seinen Unterstrukturen aus dem primären XML-Index abgerufen und in einen XML-BLOB als Ergebnis der query()-Methode konvertiert.If the path is found in the Path column in the index, the <Summary> element together with its subtrees is retrieved from the primary XML index and converted into an XML binary large object as the result of the query() method.

Beachten Sie, dass der primäre XML-Index beim Abrufen einer vollständigen XML-Instanz nicht verwendet wird.Note that the primary XML index is not used when retrieving a full XML instance. Die folgende Abfrage ruft z. B. die gesamte XML-Instanz aus der Tabelle ab, die die Produktionsanweisungen für ein bestimmtes Produktmodell beschreibt.For example, the following query retrieves from the table the whole XML instance that describes the manufacturing instructions for a specific product model.

USE AdventureWorks2012;SELECT InstructionsFROM Production.ProductModel WHERE ProductModelID=7;  

Sekundäre XML-IndizesSecondary XML Indexes

Wenn Sie die Suchleistung verbessern möchten, können Sie sekundäre XML-Indizes erstellen.To enhance search performance, you can create secondary XML indexes. Ein primärer XML-Index muss zuerst beendet werden, bevor Sie sekundäre Indizes erstellen können.A primary XML index must first exist before you can create secondary indexes. Die folgenden Typen werden unterschieden:These are the types:

  • Sekundärer XML PATH-IndexPATH secondary XML index

  • Sekundärer XML VALUE-IndexVALUE secondary XML index

  • Sekundärer XML PROPERTY-IndexPROPERTY secondary XML index

    Es folgen einige Richtlinien zum Erstellen eines oder mehrerer sekundärer Indizes:Following are some guidelines for creating one or more secondary indexes:

  • Wenn bei Ihrer Arbeitsauslastung im erheblichen Ausmaß Pfadausdrücke für XML-Spalten verwendet werden, führt der sekundäre XML-Index des Typs PATH wahrscheinlich zu einer Beschleunigung Ihrer Arbeitsauslastung.If your workload uses path expressions significantly on XML columns, the PATH secondary XML index is likely to speed up your workload. Der häufigste Fall ist das Verwenden der exist() -Methode für XML-Spalten in der WHERE-Klausel von Transact-SQL.The most common case is the use of the exist() method on XML columns in the WHERE clause of Transact-SQL.

  • Wenn bei Ihrer Arbeitsauslastung mehrere Werte aus einzelnen XML-Instanzen mithilfe von Pfadausdrucken abgerufen werden, kann das Gruppieren der Pfade innerhalb jeder XML-Instanz im PROPERTY-Index nützlich sein.If your workload retrieves multiple values from individual XML instances by using path expressions, clustering paths within each XML instance in the PROPERTY index may be helpful. Diese Situation tritt üblicherweise in einem Eigenschaftsbehälterszenario auf, wenn die Eigenschaften eines Objekts abgerufen werden und dessen Primärschlüsselwert bekannt ist.This scenario typically occurs in a property bag scenario when properties of an object are fetched and its primary key value is known.

  • Wenn bei Ihrer Arbeitsauslastung das Abfragen von Werten innerhalb von XML-Instanzen vorkommt, ohne dass dabei die Element- oder Attributnamen bekannt sind, die diese Werte enthalten, können Sie den VALUE-Index erstellen.If your workload involves querying for values within XML instances without knowing the element or attribute names that contain those values, you may want to create the VALUE index. Diese Situation kommt üblicherweise beim Durchsuchen von descendant-Achsen vor, z.B. bei //author[last-name="Howard"], wo die <author-Elemente in jeder beliebigen Ebene der Hierarchie auftreten können.This typically occurs with descendant axes lookups, such as //author[last-name="Howard"], where <author> elements can occur at any level of the hierarchy. Sie kommt auch bei Abfragen mit Platzhaltern vor, z.B. bei /book [@* = "novel"], wobei die Abfrage nach <book-Elementen sucht, die über ein beliebiges Attribut verfügen, das den Wert „novel“ aufweist.It also occurs in wildcard queries, such as /book [@* = "novel"], where the query looks for <book> elements that have some attribute having the value "novel".

Sekundärer XML PATH-IndexPATH Secondary XML Index

Wenn Ihre Abfragen im Allgemeinen path-Ausdrücke für Spalten des Typs xml angeben, beschleunigt ein sekundärer PATH-Index möglicherweise die Suche.If your queries generally specify path expressions on xml type columns, a PATH secondary index may be able to speed up the search. Wie bereits zuvor in diesem Thema beschrieben, ist der primäre Index hilfreich, wenn Sie Abfragen verwenden, die die exist() -Methode in der WHERE-Klausel angeben.As described earlier in this topic, the primary index is helpful when you have queries that specify exist() method in the WHERE clause. Wenn Sie einen sekundären PATH-Index hinzufügen, können Sie die Suchleistung in solchen Abfragen möglicherweise verbessern.If you add a PATH secondary index, you may also improve the search performance in such queries.

Zwar vermeidet ein primärer XML-Index das Aufteilen des XML-BLOBs zur Laufzeit, er bietet jedoch möglicherweise nicht die optimale Leistung für Abfragen, die auf path-Ausdrücken basieren.Although a primary XML index avoids having to shred the XML binary large objects at run time, it may not provide the best performance for queries based on path expressions. Da alle Zeilen im primären XML-Index, die einem XML-BLOB entsprechen, sequenziell nach großen XML-Instanzen durchsucht werden, kann diese sequenzielle Suche langsam sein.Because all rows in the primary XML index corresponding to an XML binary large object are searched sequentially for large XML instances, the sequential search may be slow. In diesem Fall kann ein sekundärer Index, der auf den Pfad- und Knotenwerten im primären Index aufbaut, die Indexsuche erheblich beschleunigen.In this case, having a secondary index built on the path values and node values in the primary index can significantly speed up the index search. Im sekundären PATH-Index sind die path- und node-Werte Schlüsselspalten, die effizientere Suchläufe beim Suchen nach Pfaden ermöglichen.In the PATH secondary index, the path and node values are key columns that allow for more efficient seeks when searching for paths. Der Abfrageoptimierer kann den PATH-Index für Ausdrücke wie die im folgenden Beispiel gezeigten verwenden:The query optimizer may use the PATH index for expressions such as those shown in the following:

  • /root/Location ; gibt nur den Pfad an./root/Location which specify only a path

    OROR

  • /root/Location/@LocationID[.="10"] ; gibt den Pfad- und Knotenwert an./root/Location/@LocationID[.="10"] where both the path and the node value are specified.

    Die folgende Abfrage zeigt, in welchen Fällen der PATH-Index hilfreich ist:The following query shows where the PATH index is helpful:

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS "PD")  

SELECT CatalogDescription.query('  
  /PD:ProductDescription/PD:Summary  
') AS Result  
FROM Production.ProductModel  
WHERE CatalogDescription.exist ('/PD:ProductDescription/@ProductModelID[.="19"]') = 1  

In der Abfrage entsprechen der path-Ausdruck /PD:ProductDescription/@ProductModelID und der Wert "19" in der exist() -Methode den Schlüsselfeldern des PATH-Indexes.In the query, the path expression /PD:ProductDescription/@ProductModelID and value "19" in the exist() method correspond to the key fields of the PATH index. Auf diese Weise wird die direkte Suche im PATH-Index ermöglicht und eine bessere Suchleistung als bei einer sequenziellen Suche nach path-Werten im primären Index bereitgestellt.This allows for direct seek in the PATH index and provides better search performance than the sequential search for path values in the primary index.

Sekundärer XML VALUE-IndexVALUE Secondary XML Index

Wenn Abfragen wertbasiert sind, z.B. /Root/ProductDescription/@*[. = "Mountain Bike"] oder //ProductDescription[@Name = "Mountain Bike"], und der Pfad nicht vollständig angegeben wird oder einen Platzhalter enthält, erzielen Sie möglicherweise schnellere Ergebnisse, indem Sie einen sekundären XML-Index erstellen, der auf Knotenwerten im primären XML-Index basiert.If queries are value based, for example, /Root/ProductDescription/@*[. = "Mountain Bike"] or //ProductDescription[@Name = "Mountain Bike"], and the path is not fully specified or it includes a wildcard, you might obtain faster results by building a secondary XML index that is built on node values in the primary XML index.

Die Schlüsselspalten des VALUE-Indexes sind der Knotenwert und der Pfad des primären XML-Indexes.The key columns of the VALUE index are (node value and path) of the primary XML index. Wenn die Arbeitslast das Abfragen von Werten aus XML-Instanzen umfasst, ohne dass die Element- oder Attributnamen bekannt sind, die die Werte enthalten, kann der VALUE-Index hilfreich sein.If your workload involves querying for values from XML instances without knowing the element or attribute names that contain the values, a VALUE index may be useful. Der folgende Ausdruck profitiert z. B. vom Vorhandensein eines VALUE-Indexes:For example, the following expression will benefit from having a VALUE index:

  • //author[LastName="someName"], wobei der Wert des <LastName>-Elements bekannt ist, das übergeordnete <author>-Element jedoch an beliebiger Position auftreten kann.//author[LastName="someName"] where you know the value of the <LastName> element, but the <author> parent can occur anywhere.

  • /book[@* = "someValue"], wobei die Abfrage nach dem <book>-Element sucht, das ein Attribut mit dem Wert "someValue" aufweist./book[@* = "someValue"] where the query looks for the <book> element that has some attribute having the value "someValue".

    Die folgende Abfrage gibt ContactID aus der Contact -Tabelle zurück.The following query returns ContactID from the Contact table. Die WHERE-Klausel gibt einen Filter an, der nach Werten in der AdditionalContactInfo-Spalte vom Typ xml sucht.The WHERE clause specifies a filter that looks for values in the AdditionalContactInfoxml type column. Die Kontakt-IDs werden nur zurückgegeben, wenn der entsprechende XML-BLOB mit den zusätzlichen Kontaktinformationen eine bestimmte Rufnummer enthält.The contact IDs are returned only if the corresponding additional contact information XML binary large object includes a specific telephone number. Da das <telephoneNumber>-Element an beliebiger Position im XML auftreten kann, gibt der path-Ausdruck die descendant-or-self-Achse an.Because the <telephoneNumber> element may appear anywhere in the XML, the path expression specifies the descendent-or-self axis.

WITH XMLNAMESPACES (  
  'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactInfo' AS CI,  
  'http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ContactTypes' AS ACT)  

SELECT ContactID   
FROM   Person.Contact  
WHERE  AdditionalContactInfo.exist('//ACT:telephoneNumber/ACT:number[.="111-111-1111"]') = 1  

In dieser Situation ist der Suchwert für <number> bekannt, kann jedoch an beliebiger Position in der XML-Instanz als untergeordnetes Element des <telephoneNumber>-Elements angezeigt werden.In this situation, the search value for <number> is known, but it can appear anywhere in the XML instance as a child of the <telephoneNumber> element. Diese Art der Abfrage kann möglicherweise von einer Indexsuche profitieren, die auf einem bestimmten Wert basiert.This kind of query might benefit from an index lookup based on a specific value.

Sekundärer PROPERTY-IndexPROPERTY Secondary Index

Abfragen, die einen oder mehrere Werte aus einzelnen XML-Instanzen abrufen, können möglicherweise von einem PROPERTY-Index profitieren.Queries that retrieve one or more values from individual XML instances might benefit from a PROPERTY index. Dieses Szenario tritt ein, wenn Sie Objekteigenschaften mithilfe der value() -Methode des Datentyps xml abrufen, und der Wert des Primärschlüssels des Objekts bekannt ist.This scenario occurs when you retrieve object properties by using the value() method of the xml type and when the primary key value of the object is known.

Der PROPERTY-Index basiert auf Spalten (PK, Pfad- und Knotenwert) des primären XML-Indexes, wobei PK der Primärschlüssel der Basistabelle ist.The PROPERTY index is built on columns (PK, Path and node value) of the primary XML index where PK is the primary key of the base table.

Die folgende Abfrage ruft z. B. für Produktmodell 19die folgenden ProductModelID - und ProductModelName -Attributwerte mithilfe der value() -Methode ab.For example, for product model 19, the following query retrieves the ProductModelID and ProductModelName attribute values using the value() method. Der PROPERTY-Index kann eine schnellere Ausführung als die Verwendung des primären XML-Indexes oder der anderen sekundären XML-Indizes bereitstellen.Instead of using the primary XML index or the other secondary XML indexes, the PROPERTY index may provide faster execution.

WITH XMLNAMESPACES ('http://schemas.microsoft.com/sqlserver/2004/07/adventure-works/ProductModelDescription' AS "PD")  

SELECT CatalogDescription.value('(/PD:ProductDescription/@ProductModelID)[1]', 'int') as ModelID,  
       CatalogDescription.value('(/PD:ProductDescription/@ProductModelName)[1]', 'varchar(30)') as ModelName          
FROM Production.ProductModel     
WHERE ProductModelID = 19  

Mit Ausnahme der Unterschiede, die weiter unten in diesem Thema beschrieben werden, gleicht das Erstellen eines XML-Indexes für einexml -Spalte dem Erstellen eines Indexes für eine Spalte, die nicht den Typxml aufweist.Except for the differences described later in this topic, creating an XML index on anxml type column is similar to creating an index on a non-xml type column. Die folgenden Transact-SQLTransact-SQL -DDL-Anweisungen können zum Erstellen und Verwalten von XML-Indizes verwendet werden:The following Transact-SQLTransact-SQL DDL statements can be used to create and manage XML indexes:

Abrufen von Informationen zu XML-IndizesGetting Information about XML Indexes

XML-Indexeinträge erscheinen in der Katalogsicht sys.indexes, wobei der Index den "Typ" 3 besitztXML index entries appear in the catalog view, sys.indexes, with the index "type" 3. Die Namensspalte enthält den Namen des XML-Index.The name column contains the name of the XML index.

XML-Indizes sind auch in der Katalogsicht sys.xml_indexes aufgezeichnet.XML indexes are also recorded in the catalog view, sys.xml_indexes. Diese enthält alle Spalten von sys.indexes und einige spezielle Spalten, die für XML-Indizes nützlich sind.This contains all the columns of sys.indexes and some specific ones that are useful for XML indexes. Der Wert NULL in der Spalte secondary_type zeigt einen primären XML-Index an; die Werte 'P', 'R' und 'V' stehen für sekundäre PATH-, PROPERTY- bzw. VALUE-XML-Indizes.The value NULL in the column, secondary_type, indicates a primary XML index; the values 'P', 'R' and 'V' stand for PATH, PROPERTY, and VALUE secondary XML indexes, respectively.

Der von XML-Indizes verwendete Speicherplatz kann in der Tabellenwertfunktion sys.dm_db_index_physical_statsgefunden werden.The space use of XML indexes can be found in the table-valued function sys.dm_db_index_physical_stats. Sie stellt für alle Indextypen Informationen bereit, wie z. B. zur Anzahl der belegten Datenträgerseiten, zur durchschnittlichen Zeilengröße in Byte und zur Anzahl der Datensätze.It provides information, such as the number of disk pages occupied, average row size in bytes, and number of records, for all index types.. Dieses schließt auch XML-Indizes ein.This also includes XML indexes. Diese Informationen sind für jede Datenbankpartition verfügbar.This information is available for each database partition. XML-Indizes verwenden das Partitionierungsschema und die Partitionierungsfunktion der Basistabelle.XML indexes use the same partitioning scheme and partitioning function of the base table.

Siehe auchSee Also

sys.dm_db_index_physical_stats (Transact-SQL) sys.dm_db_index_physical_stats (Transact-SQL)
XML-Daten (SQL Server)XML Data (SQL Server)