问题描述
我想测试sql Server 2019的新功能-内联UDF函数。当我在简单的SELECT中调用该函数时,它似乎运行良好。但是,如果该函数包含在视图中,则不会执行内联。
CREATE FUNCTION [dbo].[GetEmployeeFullName](@id INT) RETURNS NVARCHAR(100) AS
BEGIN
DECLARE @ret NVARCHAR(100);
SELECT @ret = FirstName + ' ' + LastName
FROM Employee
WHERE EmployeeId = @id;
RETURN @ret;
END
CREATE VIEW QEmployee AS
SELECT EmployeeId,dbo.GetEmployeeFullName(EmployeeId) AS FullName,FirstName,LastName,Street,City,ZipCode,EMail,Phone
FROM Employee
如果仅运行SELECT:
SELECT EmployeeId,Phone
FROM Employee
内联函数:
但是,如果我在视图上运行SELECT:
SELECT * FROM QEmployee
内联不再完成:
我在表中插入了10万条记录。第一种情况(内联完成时)的查询处理时间约为。 1s,而在第二种情况下,超过3s。谁能解释我,为什么在第二种情况下sql Server不内联函数?我希望两种情况下的查询计划都应该完全相同。
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)