Оптимизация SQL с использованием табличной переменной - PullRequest
2 голосов
/ 02 июля 2019

У нас есть старая хранимая процедура, выполнение которой занимает более 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.

Теперь скрипт работает намного быстрее.

Видите ли вы потенциальную ловушку в моем подходе?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...