Можно ли параметризовать запрос с предикатом xml.exist () для создания руководства плана? - PullRequest
0 голосов
/ 20 сентября 2018

У меня есть запрос T-SQL, который работает очень плохо.Запрос генерируется динамически и не может быть изменен.Однако, если я смогу указать SQL на использование правильных индексов, запрос будет выполняться быстрее.Запрос выглядит следующим образом:

SELECT  TOP 500 l.LogID as LogID, [Severity], [Title], [User], [Timestamp] 
FROM [Log] l with (nolock)  
WHERE Severity IN ('Audit', 'Error') 
AND  (ObjectGuid = '3fb22608-ee3c-42ef-ae60-2d788343bf72' 
    AND (NOT objecttype in ('TypeA','TypeB')) 
    OR AdditionalInfoXml.exist('//Level1/Level2[. = "58684"]') = 1) 
AND Timestamp > '2018-09-14 00:00:00.00'  ORDER BY [LogID] desc

Я считаю, что SQL sp_create_plan_guide позволит мне сделать это.Но запрос должен быть параметризован так, чтобы план работал для любого значения (в предикате).

sp_get_query_template позволяет мне параметризовать его, если бит запроса xml удален.Но мне нужно это сохранить.Есть ли способ?

...