Оптимизация проекции XQuery

Я получаю ужасную производительность от проекции XQuery на Sql Server. Каким будет лучший способ написать следующее преобразование?

select DocumentData.query( '<object type="dynamic"> <state> <OrderTotal type="decimal"> {fn:sum( for $A in /object[1]/state[1]/OrderDetails[1]/object/state[1] return ($A/ItemPrice[1] * $A/Quantity[1]))} </OrderTotal> <CustomerId type="guid"> {xs:string(/object[1]/state[1]/CustomerId[1])} </CustomerId> <Details type="collection"> {/object[1]/state[1]/OrderDetails[1]/object} </Details> </state> </object>') as DocumentData from documents 

(Я знаю, что код немного из контекста)

Если я проверил выполнение плана для этого кода, произойдет примерно 10+ объединений. Должен ли я сломать это, чтобы использовать для $ var для каждого уровня в структуре?

Для большего контекста это то, что я пытаюсь выполнить: http://rogeralsing.com/2011/03/02/linq-to-sqlxml-projections/

Я пишу «переводчик Linq to XQuery» / эмулятор базы данных NoSQL Document, фильтрация работает как шарм, прогнозы страдают от проблем.

Эта статья весьма полезна: оптимизация производительности для типа данных XML в SQL Server 2005

В частности, он рекомендует вместо написания путей формы …

/ Объекта [1] / состояние [1] / CustomerId [1]

вам стоит написать …

(/ Объект / состояние / CustomerId) [1]

  • Чтение XML-запроса через sql-запрос
  • Генерировать XML без пространства имен по умолчанию в дочерних узлах
  • Разбор строки XML-сервера SQL Server в поле varchar
  • Сумма элементов продолжительности XML в SQL2008
  • sql-сервер, получающий определенные данные из столбца XML
  • Поиск различий между двумя строками в SQL
  • Xpath возвращает NULL для действительного выражения Xpath
  • Я хочу обрезать XML-данные в табличный формат в sql-сервере
  • Получить узлы XML из столбца SQL Server в виде списка, разделенного запятыми
  • Проверка того, помечен ли XML-элемент «xsi: nil» в SQL
  • Запрос столбца XML на другой
  • Interesting Posts

    Как объединить несколько строк в список с разделителями-запятыми в SQL Server?

    Разделить строку с помощью CHARINDEX () в RIGHT () или SUBSTRING () вернуть неверный результат

    SQL Server создает битсет больше, чем POWER (2,30)

    Изменение имени узла XML динамически для циклического перехода по длинному списку в SQL Server

    Запрос WMI на виртуальную машину, возвращающую локальную информацию

    Отображение типа данных XML с помощью NHibernate

    Ошибка SQL Server 2014 при обновлении пакета обновления

    TSQL округляет десятичное число

    Запись триггера по столбцу

    MSSQL-триггер в UPDATE: поддержка нескольких обновлений строк

    Выполняется ли хранимая процедура при истечении времени ожидания приложения ASP.NET, вызвавшего его?

    Не удается подключиться к базе данных Azure SQL из Visual Studio

    Как проверить всю хранимую процедуру в SQL Server?

    Проблема, связанная с предложением where в SQL Server

    Синтаксис SQL Server для локального и удаленного сервера

    Давайте будем гением компьютера.