У меня есть скалярная функция, которая выглядит примерно так:
CREATE FUNCTION my_scalar_function
()
RETURNS uniqueidentifier
BEGIN
RETURN '<GUID>'
END
У меня также есть определение представления (с несколькими объединениями), которое вызывает эту скалярную функцию. Ниже приведено его представление:
CREATE VIEW my_view AS
SELECT Id, Col1, Col2, Col3
FROM my_table
WHERE Id = my_scalar_function()
Я не могу изменить скалярную функцию на TVF или что-либо еще, и GUID, который она содержит, зависит от компьютера. Это значение задается во время настройки и впоследствии не изменяется. Вызов my_scalar_function
заставляет SQL неправильно оптимизировать запросы. Если я вручную заменю вызов на <GUID>
, например, так:
ALTER VIEW my_view AS
SELECT Id, Col1, Col2, Col3
FROM my_table
WHERE Id = '<GUID>'
, тогда оптимизации будут правильными.
Так что мой вопрос, как я могу заменить вызовдля скалярной функции с ее результатом в определении представления, предпочтительно во время создания или, альтернативно, позже с запросом ALTER VIEW
?