Я написал хранимую процедуру, которая ожидает VARCHAR, представляющий некоторые данные в формате XML.Вот пример того же самого:
'<Documents><Filters><DocClasses><DocClass Value="QUO" /></DocClasses></Filters></Documents>'
Я обрабатываю XML, чтобы заполнить переменную таблицы:
DECLARE @DocClassesFiltered BIT
DECLARE @DocClasses TABLE
([DocClass] VARCHAR(3) PRIMARY KEY)
SET @DocClassesFiltered = 0
Я использую sp_xml_preparedocument и т. Д., Который является стандартным для болота, поэтому я не буду утомлять васдокументируя это.Достаточно сказать, что я храню его дескриптор в переменной с именем @ idoc
. Затем я заполняю переменную таблицы следующим образом:
IF EXISTS
(SELECT TOP 1 1
FROM OPENXML(@idoc, 'Documents/Filters/DocClasses/DocClass', 2)
WITH([Value] VARCHAR(3) '@Value') [DAL])
BEGIN
SET @DocClassesFiltered = 1
INSERT
INTO @DocClasses
([DocClass])
SELECT [Value]
FROM OPENXML(@idoc, 'Documents/Filters/DocClasses/DocClass', 2)
WITH([Value] VARCHAR(3) '@Value') [DAL]
END
В выводе «Фактический план выполнения» это приводит кпредупреждение Грант памяти запроса обнаружил «ExcessiveGrant», что может повлиять на надежность.Размер гранта .... (и т. Д.)
Мои вопросы: 1) Нужно ли вообще об этом беспокоиться?2) Если так, как я могу избежать этого?