Udostępnij za pośrednictwem


Główny indeks XML

Indeks główny XML indeksuje wszystkie znaczniki, wartości i ścieżki w instancji XML w kolumna XML.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 Server uses this primary key to correlate rows in the primary XML index with rows in the table that contains the XML column.

Indeks główny XML jest reprezentacją shredded i trwałe bloków BLOB XML w xml Typ danych kolumna. Dla każdego XML duży obiekt binarny (BLOB) kolumna indeks tworzy kilka wierszy danych.Liczba wierszy w indeksie jest w przybliżeniu równa liczbie węzłów w duży obiekt binarny XML.Kiedy kwerenda pobiera pełne wystąpienie XML, SQL Server zawiera wystąpienia kolumna XML. Kwerendy w obrębie wystąpienia XML za pomocą indeksu głównego XML, a może zwracać wartości wartość skalarna lub poddrzewa XML przy użyciu indeksu samego siebie.

Każdy wiersz przechowywane są następujące informacje w węźle:

  • Nazwa tagu, na przykład z nazwą elementu lub atrybut.

  • Wartość węzła.

  • Typ węzła, takie jak element węzeł, węzeł atrybut lub tekstu węzła.

  • Dokumentowanie informacji o zamówieniu, reprezentowany przez identyfikator wewnętrznego węzła.

  • Ścieżka z każdego węzła głównego drzewa XML.W tej kolumnie są wyszukiwane w ścieżce wyrażeń w kwerendzie.

  • Klucz podstawowy tabela bazowa.Klucz podstawowy tabela bazowa jest zduplikowany w indeksu głównego XML dla łączyć zwrotnego z tabela bazowa, a maksymalna liczba kolumn w kluczu podstawowym tabela bazowa jest ograniczona do 15.

Informacji na ten węzeł jest używany do oceny i skonstruować wyniki XML dla określonej kwerendy.Do optymalizacji nazwa tagu i informacji o typie węzła są kodowane jako wartości całkowite, a kolumna Ścieżka korzysta z tej samej metody kodowania.Ponadto ścieżka są przechowywane w odwrotnej kolejności aby zezwolić na zgodnych ścieżka, gdy znany jest tylko sufiks ścieżka.Na przykład:

  • //ContactRecord/PhoneNumber znane są tylko dwa ostatnie kroki.

LUB

  • /Book/*/Title Jeżeli symbol wieloznaczny znaku)*) jest określony w środku wyrażenie.

Procesor kwerend używa kwerend dotyczących indeksu głównego XML xml Data Type Methods i zwraca wartości wartość skalarna lub poddrzewa XML z indeksu głównego, sam. (Ten indeks przechowuje wszystkie informacje potrzebne do rekonstruowania wystąpienie XML).

For example, the following query returns summary information stored in the CatalogDescriptionxml type column in the ProductModel table.Kwerenda zwraca <Summary> przechowywane informacje tylko, do którego opis wykazu modele produktu są także <Features> Opis.

WITH XMLNAMESPACES ('https://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/PD:Features') = 1

W odniesieniu do indeksu głównego XML, zamiast rozdrabniania każde wystąpienie duży obiekt binarny XML w tabela bazowa wierszy w indeksie, które odpowiadają każdej XML duży obiekt binarny są wyszukiwane kolejno wyrażenie określone we exist() Metoda. Jeżeli ścieżka znajduje się kolumna Ścieżka w indeksie, <Summary> element wraz z jego poddrzewa jest pobierana z indeksu głównego XML i konwertowana do obiektu dużych binarne XML w wyniku query() Metoda.

Należy zauważyć, że indeksu głównego XML nie jest używany podczas pobierania pełnej wystąpienie XML.Na przykład poniższa kwerenda pobiera z tabela całe wystąpienie XML, które w tym artykule opisano instrukcje produkcji dla określonego modelu produktu.

USE AdventureWorks;

SELECT Instructions
FROM Production.ProductModel 
WHERE ProductModelID=7;