我们的一个数据库服务器上有一个锁定问题。在详细研究了造成阻塞的原因之后,我们发现这是我们的功能之一。真正令人惊讶的是,这个函数什么也不做--只返回格式化的服务器名。
CREATE FUNCTION [dbo].[GetReleaseName]()
RETURNS NVARCHAR(50)
AS
BEGIN
DECLARE @serverName NVARCHAR(20)
DECLARE @ReleaseVersion NVARCHAR(20)
SET @ReleaseVersion = '20170807'
RETURN @@SERVERNAME + '_UAT_' + @ReleaseVersion
END
@@SERVERNAME
怎么会造成任何阻塞呢?
发布于 2017-08-08 09:50:36
标量函数性能较差。
尝试用内联表值函数替换函数。
下面是一个例子:
CREATE FUNCTION [dbo].[GetReleaseName_ITVF]()
RETURNS TABLE
AS
RETURN(
SELECT @@SERVERNAME + '_UAT_20170807' as FullServerName
)
用法:
SELECT * FROM [table] CROSS APPLY GetReleaseName_ITVF()
https://stackoverflow.com/questions/45563444
复制相似问题