Я пытаюсь оптимизировать некоторые ужасно сложные SQL-запросы, потому что требуется слишком много времени для завершения.Является ли SQL DATEDIFF (год, ..., ...) дорогим вычислением?
В моих запросах у меня есть динамически создаваемые операторы SQL с множеством одинаковых функций, поэтому я создал временную таблицу, где каждая функция вызывается только один раз, а не много, много раз - это сокращает время выполнения на 3/4 ,
Итак, мой вопрос: могу ли я ожидать увидеть большую часть разницы, если скажем, 1000 датированных вычислений сужаются до 100?
EDIT: Запрос выглядит следующим образом:
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 таких запросов, в которых эти датированные оценки вычисляются так. Я знаю, что я могу легко собрать их всех в темп-таблицу (1000 датфиксов - 50) - но стоит ли это, будет ли разница в секундах? Я надеюсь на улучшение лучше, чем на десятые секунды.
Опубликовать запрос - на самом деле не поможет вам подтвердить свои предположения при выполнении DATEDIFF в глубинных подзапросах 2+ ... –