У меня есть запрос 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 удален.Но мне нужно это сохранить.Есть ли способ?