我试图通过在 SQL SERVER 中使用 UDF 使我的查询可读,但使用该函数时运行时间会急剧增加。
以下是我正在使用的功能:
create function DL.trim_all(@input varchar(max))
returns varchar(max)
as begin
set @input=replace(replace(replace(@input,' ',''),')',''),'(','')
return @input
end
而不是写:
SELECT
CASE WHEN replace(replace(replace([FULL_NAME_1],' ',''),')',''),'(','')=replace(replace(replace([FULL_NAME_2],' ',''),')',''),'(','') THEN 1 ELSE 0 END AS [name_match],
CASE WHEN replace(replace(replace([ADDRESS_1],' ',''),')',''),'(','')=replace(replace(replace([ADDRESS_2],' ',''),')',''),'(','') THEN 1 ELSE 0 END AS [adrs_match]
.
.
.
FROM
TABLE_1
20个不同的领域。
使用该函数时,运行时间为 12.5 分钟,而不使用该函数时,运行时间为 45 秒。
有任何想法吗?