日期:2014-05-17  浏览次数:20478 次

SQL语句执行时间太长了,请各位帮忙看看
select '移民' as Project,
office0 as Area,
ZType as ConsultType,
50 as ReturnTask,
ID as CustomerID,
Serialnumber as CustomerNumber,
Name,
I.ImCountryID+',' as Country,
TelePhone,
Mobile,
adviser0 as Adviser,
'未处理' as State,
GETDATE() as AddDateTime,
1 as IsSatisfaction,
1 as Flag 
from [192.168.20.49].data_91go_oa.dbo.Immigrate_View I 
where I.ktype='失效客户' 
and DATEDIFF(D,(select  top 1 updatetime from [192.168.20.49].data_91go_oa.dbo.dongdaily where bigclass='immigrate' and infomationid=I.ID order by ID desc),getdate())=1

------解决方案--------------------
[192.168.20.49].data_91go_oa.dbo.Immigrate_View 

这种方式做关联肯定会很慢的。
时间都耗在网络传输上了。

把sql放到192.168.20.49上去关联吧。
或者把两个表都抽取到本地,再在本地关联
------解决方案--------------------
[192.168.20.49].data_91go_oa.dbo.Immigrate_View --> 是个视图(view)?
先优化一下视图对应的查询语句.
------解决方案--------------------
你将这个逻辑在192.168.20.49创建成一个VIEW,然后再用OPENDATASOURCE或者OPENROWSET调用看一下性能
------解决方案--------------------
这样在192.168.20.49上直接执行VIEW然后给出执行计划