У меня есть SP с частью кода разбора XML-переменных.Сохраненная процедура XML-анализ синтаксиса
XML-имеет следующую структуру:
<root>
<ID Reason="1">1</ID>
<ID Reason="2">2</ID>
<ID Reason="2">3</ID>
<ID Reason="1">5</ID>
</root>
SP часть кода:
INSERT INTO #tmp_table (ID,Reason)
SELECT IDs.ID.value('.', 'int')
, IDs.ID.value('@Reason', 'int')
FROM @I_XML.nodes('/root/ID') AS Ids(ID)
При попытке запустить SP с входным параметром XML, что есть 100000 строк требуется безумное количество времени а стоимость исполнения - 5%.
Как я могу улучшить часть кода SP, чтобы сделать ее быстрее?
Если XML выглядит так, есть ли причина, по которой вызывающий объект не может передать табличный параметр? –
Нет, я не могу изменить тип входного параметра –
Я бы не стал беспокоиться о стоимости исполнения, но «сумасшедшее количество времени» звучит как бы серьезный. Сколько времени на самом деле? В тестах, которые я сделал на ноутбуке, ваш запрос занял 2 секунды, а с переписью в моем ответе потребовалось 1,5 секунды. Версия OPENXML заняла 4 секунды. –