Функция в предложении Где вызывает проблемы с оптимизацией запросов - PullRequest
0 голосов
/ 25 марта 2020

Я унаследовал хранимую процедуру, которую я пытаюсь заставить работать более эффективно. Часть процедуры имеет следующий фрагмент:

select distinct t.claimid, max(rtwid)
from wkabrtw t
join #appealpendingdetails a on a.claimid = t.claimid
where convert(smalldatetime,t.statdt) <= a.appealrecddt
group by t.claimid

Я знаю, что одной из проблем является функция Convert() в предложении Where. Кто-нибудь знает другой способ написать эту строку без использования функции в предложении Where? Значение t.statdt является datetime.

1 Ответ

0 голосов
/ 26 марта 2020

Нет улучшения производительности в предложении where с функцией Convert.

Например, получение столбцов, sql сервер преобразует / конвертирует ваши данные во что-то «новое», а затем использует их для сравнить. Лучше не было бы ничего конвертировать. Храните ваши данные как можно более совместимыми. В любом случае, операторы sql работают быстро, а функция convert компилируется так, чтобы быть очень быстрой. У вас могут возникнуть проблемы с производительностью, если вы решите каждый раз открывать Курсор для извлечения строк, приведения / преобразования и затем сравнения.

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