Udostępnij za pośrednictwem


Indeks główny XML

Indeks główny XML indeksuje wszystkie znaczniki, wartości i ścieżek wewnątrz instancji XML 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 shredded i trwałe reprezentacja obiektów XML blob w xml Typ danych kolumna.Dla każdego XML duży obiekt binarny (BLOB) kolumna indeks tworzy kilka wierszy danych.Liczba wierszy w indeksie wynosi około liczby węzłów w duży obiekt binarny XML.Kiedy kwerenda pobiera pełną instancję XML SQL Server zawiera wystąpienie z kolumna XML.Kwerend w instancji XML za pomocą indeksu głównego XML i może zwracać wartość skalarna wartości lub XML poddrzew przy użyciu sam indeks.

Każdy wiersz przechowuje węzła następujące informacje:

  • Nazwa tagu, takie jak element lub atrybut nazwy.

  • Wartość węzła.

  • Typ węzła, takie jak węzeł elementu, węzeł atrybut lub tekst węzła.

  • Dokument Zamówienie informacje reprezentowane przez identyfikator węzła wewnętrznego.

  • Ścieżka z każdego węzła głównego drzewa XML.To kolumna są wyszukiwane wyrażenia w kwerendzie, ścieżka.

  • Klucz podstawowy tabela bazowa.Klucz podstawowy tabeli podstawowej jest zduplikowany w indeks podstawowy XML dla łączyć zwrotnego z tabela bazowa, a maksymalna liczba kolumn w kluczu podstawowym tabeli podstawowej jest ograniczony do 15.

Te informacje węzła jest używany do oceny i skonstruować wyniki XML dla określonej kwerendy.Do celów optymalizacji nazwa tagu i informacji typu węzeł są kodowane jako wartości całkowite, a kolumna ścieżka używa tego samego kodu.Ponadto ścieżka są przechowywane w odwrotnej kolejności umożliwienie zgodnych ścieżka, gdy znany jest tylko sufiks ścieżka.Na przykład:

  • //ContactRecord/PhoneNumber Jeżeli znane są dwa ostatnie kroki

LUB

  • /Book/*/TitleJeżeli symbol wieloznaczny (*) jest określony w środku wyrażenie.

Procesor kwerend używa indeksu głównego XML dla kwerend obejmujących Metody typu danych XML i zwraca wartości wartość skalarna lub poddrzewa XML z indeksu głównego, sam.(Ten indeks przechowuje wszystkie informacje niezbędne do rekonstruowania XML wystąpienie.)

For example, the following query returns summary information stored in the CatalogDescriptionxml type column in the ProductModel table.Kwerenda zwraca <Summary> informacji tylko dla modelu produktu, którego opis wykazu przechowuje <Features> Opis.

WITH XMLNAMESPACES ('https://schemas.microsoft.com/sqlserver/2008/07/adventure-works2008R2/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 podstawowego indeksu 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 sekwencyjnie wyrażenie określone w exist() metoda.Jeśli ścieżka zostanie znaleziony kolumna Ścieżka w indeksie, <Summary> element wraz z jego poddrzew jest pobierana z indeksu głównego XML i konwertowane na XML duży obiekt binarny w wyniku query() metoda.

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

USE AdventureWorks2008R2;

SELECT Instructions
FROM Production.ProductModel 
WHERE ProductModelID=7;

Zobacz także

Koncepcje