Используемая функция даты на левой стороне равна - PullRequest
0 голосов
/ 29 апреля 2020

У меня есть часть оператора SQL, как показано ниже:

  WHERE  F.Organ=@OrganID 
  AND F.IsSubmitted = 0
  AND (DATEADD(day, ISNULL(F.DaysDue, 0), FV.DueDate)) < CONVERT(datetime,DATEADD("MINUTE",@UserOffset,GETUTCDATE()))

У меня есть DATEADD слева от знака равенства. Запрос работает нормально, но есть ли проблема с его наличием?

1 Ответ

0 голосов
/ 29 апреля 2020

Проблема в том, что это не S'argable и не будет использовать индекс, даже если существует соответствующий индекс.

Во многих случаях вы можете преобразовать, чтобы переместить функцию даты в правую часть. .

Как указывалось @HABO, в левой или правой части критериев фильтра нет ничего особенного. Любые вычисления с использованием данных из строки (строк) исключают использование поиска по индексу (с некоторыми специальными исключениями, такими как CAST(x AS date)).

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