我正在对性能不佳的存储过程的点点滴滴进行故障排除。该过程的这一部分引发了 NO JOIN PREDICATE 警告
select
method =
case methoddescription
when 'blah' then 'Ethylene Oxide'
when NULL then 'N/A'
else methoddescription
end,
testmethod =
case methoddescription
when 'blah' then 'Biological Indicators'
when NULL then 'N/A'
else 'Dosimeter Reports'
end,
result =
case when l.res is null or l.res <> 1 then 'Failed'
else 'Passed'
end,
datecomplete = COALESCE(CONVERT(varchar(10), NULL, 101),'N/A')
from db2.dbo.view ls
join db1.dbo.table l
on ls.id = l.id
where item = '19003'
and l.id = '732820'
视图 ( [ls]
) 调用远程服务器(计划右侧的远程查询 %41)。
这是该计划的图片:
我只是因为这篇博文才问这个问题,我想确保以后不会再回来咬我。
因为我们知道,
l.id = '732820'
然后ls.id = l.id
SQL Server 派生出ls.id = '732820'
IE
是相同的
这种重写对性能来说还不错。