Я знаю, что должен публиковать ответ, но с этими вопросами могут последовать ответы:
1.) Табличные подсказки на месте? Если нет, то экспериментируйте с применением этих
2.) Используются ли все доступные индексы, и является ли столбец TaskId
единственным приемлемым индексом? Иногда определенные ситуации при анализе приводят к необходимости нового индекса
3.) Являются ли все 2 миллиона записей живыми / активными в любой момент времени?
4.) Вы проверили фрагментированные индексы? Ежедневное архивирование может привести к фрагментации индекса, поэтому вам может потребоваться добавить в конце задания архивирования шаг для проверки и устранения фрагментации
5.) Поле состояния для new
, ready
, processing
, error
, abort
, done
для какого типа данных?
6.) Вы экспериментировали с индексированными представлениями? Если вы уже знаете, что ограничиваете определенные данные и хотите избежать сканирования таблиц, это может помочь