У нас есть старая хранимая процедура, выполнение которой занимает более 3 минут.
Примерно так:
Select *
from Table A
left Job Table B on A.ID = B.PID
Where
...
A.StartDate > @Date1
And A.EndDate < @Date2
Одной из причин медлительности является то, что таблица A содержит более 20 миллионов строк.
Обе таблицы имеют правильную индексацию.
Чтобы исправить это, я создал переменную таблицы (такую же структуру, как у таблицы A) и заполнил ее
Select *
From TableA
Where A.StartDate > @Date1
And A.EndDate < @Date2
Затем я соединил эту табличную переменную с таблицей B.
Теперь скрипт работает намного быстрее.
Видите ли вы потенциальную ловушку в моем подходе?