我正面临一个奇怪的情况。我有以下update
语句,与一个月前的几乎瞬间相比,花费的时间太长,几乎要花费30秒,而要执行Azure中的链接服务器:
UPDATE es
SET es.ADFLAG3=1
FROM MYLINKEDSERVER.IMPERIALDB.DBO.ESFIDOCUMENTTRADE es
JOIN #WMS_CVR_ORDERCONFIRMAT WMSC on es.gid=WMSC.FDOCUMENTGID
我该如何优化?有什么事吗谢谢
编辑
执行计划中的远程扫描是100%...
答案 0 :(得分:0)
第二个表中可能有多个行匹配。如果是这样,exists
可能会有所帮助:
UPDATE es
SET es.ADFLAG3 = 1
FROM MYLINKEDSERVER.IMPERIALDB.DBO.ESFIDOCUMENTTRADE
WHERE EXISTS (SELECT 1
FROM #WMS_CVR_ORDERCONFIRMAT WMSC
WHERE es.gid = WMSC.FDOCUMENTGID
);
无论哪种情况,您都希望在#WMS_CVR_ORDERCONFIRMAT(FDOCUMENTGID)
上建立索引。