Давайте предположим, что у меня есть это:SQL Server - Кэширование локальных данных внутри функции
SELECT x, y, z
FROM t1
WHERE fn_ExpensiveLookup(x);
И давайте предположим, что fn_ExpensiveLookup
делает много дорогих операций (некоторые из которых могут быть кэшированы только для продолжительности запроса/подключения).
Я не могу использовать временные таблицы внутри скалярнозначных функций, и я считаю, что переменные таблицы не будут сохраняться между вызовами функций.
Итак, как я могу кэшировать некоторые вещи внутри функции?
Не могли бы вы переместить часть дорогостоящей логики «кэширования» вне функции и передать результат в качестве второго параметра? – Curt
@Curt Я могу только изменить предложение where и функцию. Остальная часть запроса не может измениться. –
вы можете использовать временные таблицы внутри скалярнозначных функций, используя синонимы. Не рекомендуется, но это возможно. –