我使用任一查询1:
delete dp
from [linkedserver\sqlserver].[test].[dbo].[documentpos] dp
where not exists (
select 1 from document d where d.GUID = dp.documentguid
)
或查询2:
DELETE cqdp
FROM [linkedserver\sqlserver].[test].[dbo].[documentpos] cqdp
left join Document cqd on cqd.GUID = cqdp.DocumentGUID
where cqd.guid is null
两个查询都执行相同的操作,但是花费的时间太长。 2天后我已取消执行。
这是两个查询的估计执行计划:
我还有其他一些查询,它们使用相同的链接服务器,并且查询时间不长。但显然链接服务器存在问题(98%的时间进行远程扫描)。我该如何减少远程扫描的成本?
答案 0 :(得分:1)
尝试一下:
SELECT DISTINCT GUID
INTO [linkedserver\sqlserver].[test].[dbo].[temp_guids]
FROM document
DELETE cqdp
FROM [linkedserver\sqlserver].[test].[dbo].[documentpos] cqdp
left join [linkedserver\sqlserver].[test].[dbo].[temp_guids] cqd on cqd.GUID = cqdp.DocumentGUID
where cqd.guid is null