Является ли SQL DATEDIFF (year,…,…) дорогостоящим вычислением?

Я пытаюсь оптимизировать некоторые ужасно сложные запросы SQL, потому что это занимает слишком много времени, чтобы закончить.

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

Итак, мой вопрос: могу ли я ожидать значительных отличий, если, скажем, 1000 вычислений по датировке сузятся до 100?

РЕДАКТИРОВАТЬ: запрос выглядит так:

SELECT DISTINCT M.MID, M.RE FROM #TEMP INNER JOIN M ON #TEMP.MID=M.MID 
WHERE ( #TEMP.Property1=1 ) AND 
DATEDIFF( year, M.DOB, @date2 ) >= 15  AND  DATEDIFF( year, M.DOB, @date2 ) <= 17 

где они генерируются динамически как строки (объединяются в биты и куски), а затем выполняются так, что различные параметры могут быть изменены на каждой итерации - в основном, последние строки, содержащие все виды запросов DATEDIFF.

Существует около 420 запросов, подобных этим, где эти даты вычисляются следующим образом. Я знаю, что могу легко собрать их все во временную таблицу (1 000 датировок становится 50) - но стоит ли это, будет ли какая-то разница в секундах? Надеюсь на улучшение лучше чем за десятые доли секунды.

Ответы на вопрос(3)

Ваш ответ на вопрос