在SQL Server 2014中引入了 本机编译的存储过程 这一特性,而在SQL Server 2016中,我们将能够实现 标量用户自定义函数 (Scalar UDF)的本机编译(Natively Compilation)。
SQL Sever会将标准的T-SQL语句编译为一种专有的中间语言,并在运行时对此中间语言进行解释。而在本机编译的情况下,存储过程将转换为C代码并编译到一个DLL中,SQL Server会在运行时使用这个DLL文件。
现在,Scalar UDF也能够以类似的方式编译为机器代码了。对于简单的操作来说,这一过程会极大地改善它的性能。只要是普通的Scalar UDF能够使用的场合,都可以转为使用本机编译的Scalar UDF。不仅如此,它还能够在本机编译的存储过程中使用,这一点对于代码重用来说是个巨大的胜利,因为在SQL Server中,这种方式之前总是被认为意味着糟糕的性能。
与本机编译的存储过程一样,本机编译的Scalar UDF也必须被定义为 绑定到架构 (schema bound)。在存储过程中,WITH SCHEMABINDING选项表示本机编译是所期望的方式。目前还不清楚这一选项将如何作用于UDF,不过就像你已经看到的一样,它必然代表绑定到架构的函数。或许它能够自动检测到某个绑定到架构的UDF可否进行本机编译,根据结果不同进行相应的举措。
查看英文原文: SQL Server 2016: Natively Compiled Functions