У меня довольно простой запрос:
IF EXISTS (SELECT 1 FROM system.RawEvent_pool1 WHERE ProcessedDate IS NULL)
EXECUTE [system].[usp_ProcessAuditData] '1'
У меня есть отфильтрованный индекс для system.RawEvent_pool1.
Он отфильтрован по ProcessedDate IS NULL (ProcessedDate включен в индекс)
Таким образом, индекс должен идеально соответствовать этому запросу.
Исходя из фактического плана выполнения, я могу сказать, что при выполнении из Management Studio индекс используется должным образом.
Но при выполнении точно такого же запроса в той же базе данных из агента заданий SQL индекс не используется.
Вместо этого план запроса использует кластеризованный индекс первичного ключа для таблицы.
Это можно увидеть в хранилище запросов.
Дополнительная информация: задание выполненовыполняется под другим аккаунтом.
Есть ли логическое объяснение этому поведению?
Тогда я бы хотел услышать это: -)