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

关于链接服务器的问题
select * 
from linkedsr.dbo.product pt 
inner join linkedsr.dbo.Detail dt on ...conditionstatement...
其原理是不是从那个服务器取整个product和detail表到本地,然后做连接,那如果两张表很大是不是很不效率
select *  from openrowset(''SQLOLEDB'','[ConString]','select * from product inner join detail on ..')又是怎样的原理呢

------最佳解决方案--------------------
引用:
select * 
from linkedsr.dbo.product pt 
inner join linkedsr.dbo.Detail dt on ...conditionstatement...
其原理是不是从那个服务器取整个product和detail表到本地,然后做连接,那如果两张表很大是不是很不效率
select *  from openrowset(''SQLOLEDB''……
补充一下,如果整个表取过来,那么带宽、存储空间都是想打当的挑战,链接服务器需要经过SQLServer、windows、网络等等多层验证,且数据不在本地磁盘,所以如非必要,还是不要经常或者常态化使用。openrowset其实是把操作封装起来,以简化用户的操作。
------其他解决方案--------------------
没有整合,直接访问,就像远程访问一样,性能方面肯定会比访问同一个库要差
------其他解决方案--------------------
OPENROWSET函数给数据源传入一个连接串和查询来提取需要的数据,可以使用OPENROWSET函数从任何支持注册OLE DB的数据源获取数据。


------其他解决方案--------------------
引用:
引用:select * 
from linkedsr.dbo.product pt 
inner join linkedsr.dbo.Detail dt on ...conditionstatement...
其原理是不是从那个服务器取整个product和detail表到本地,然后做连接,那如果两张表很大是不是很不效率
s……

这样解释的话我有些懂了,但是分公司总公司库在不同服务器上,这种要跨服务器来join大数据表确实很慢
------其他解决方案--------------------
引用:
引用:引用:select * 
from linkedsr.dbo.product pt 
inner join linkedsr.dbo.Detail dt on ...conditionstatement...
其原理是不是从那个服务器取整个product和detail表到本地,然……
那你要用复制技术了,可能用合并复制比较合用。