Использование SQL Server 2016. Я выполняю следующий запрос на обновление:
update a set a.[Project Definition]=b.[Project] FROM [Table1] a
inner join [Table2] b
on dbo.fReplace(a.[Project Definition]) = dbo.fReplace(b.
[PROJECT #])
and a.[Project Definition] <>''
and difference(a.[Project Description],b.[Project Name])>=3
Где [fReplace] определяется следующим образом (он просто удаляет все нечисловые символы из поля):
CREATE function [dbo].[fReplace](@strtext varchar(2000))
returns varchar(2000)
as
begin
declare @i int = 32, @rplc varchar(1) = '';
while @i < 256
begin
if (@i < 48 or @i > 57) and CHARINDEX(char(@i),@strtext) > 0
begin
--° #176 ~ 0 --¹ #185 ~ 1 --² #178 ~ 2 --³ #179 ~ 3
set @rplc = case @i
when 176 then '0'
when 185 then '1'
when 178 then '2'
when 179 then '3'
else '' end;
set @strtext = REPLACE(@strtext,CHAR(@i),@rplc);
end
set @i = @i + 1;
end
return ltrim(rtrim(@strtext));
end
Запрос выполняется очень медленно ... Есть ли способ ускорить его?
Обратите внимание, что я уже добавил индексы по полям выше.
С уважением,
М.Р.