![]() |
Главная Случайная страница Контакты | Мы поможем в написании вашей работы! | |
|
Если обычно запросы задают выражения пути для столбцов типа данных xml, вторичный индекс PATH может ускорить их поиск. Как ранее отмечалось, первичный индекс полезен в тех запросах, где метод exist() указан в предложении WHERE. Добавление вторичного индекса PATH может еще более повысить производительность поиска в таких запросах.
Хотя первичный XML-индекс позволяет избежать на стадии выполнения запроса разбора больших двоичных объектов типа данных XML, он не в состоянии обеспечить максимальную производительность запросов на основе выражений пути. Так как все строки первичного XML-индекса, соответствующие большому двоичному объекту XML, просматриваются последовательно, такой поиск работает довольно медленно. В таких случаях наличие вторичного индекса, построенного для значений путей и узлов первичного индекса, может существенно ускорить поиск в нем. Во вторичном индексе PATH значения пути и узлов являются ключевыми столбцами, позволяющими выполнять более эффективный поиск путей. Оптимизатор запросов может использовать индекс PATH, например для следующих выражений:
· /root/Location, что задает только путь
Or
· /root/Location/@LocationID[.="10"], где заданы как значение пути, так и значение узла.
Следующий запрос демонстрирует, при каких условиях может быть полезен индекс PATH:
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/@ProductModelID[.="19"]') = 1В этом запросе в методе exist() выражение пути /PD:ProductDescription/@ProductModelID и значение "19" соответствуют ключевым полям индекса PATH. Это позволяет выполнять поиск непосредственно в индексе PATH и при этом обеспечивает более высокую производительность, чем при последовательном переборе значений пути в первичном индексе.
Дата публикования: 2015-02-03; Прочитано: 192 | Нарушение авторского права страницы | Мы поможем в написании вашей работы!