女士们和男士们 -
我正在与建议在SQL Server中使用链接服务器(Informix)的人合作。
他们发现(出于未知原因)他们在连接到SQL的客户端工具上运气更好,SQL Server将SQL语句代理到Informix,然后将客户端工具直接指向Informix。我的想法当然是“解决客户端问题> Informix连接问题,不要使用黑客” - 但这不仅仅是关键点,而且可能无法由你真正协商。
话虽如此,这种方法在性能方面有哪些危险?
我的问题:
任何人都可以确定在SQL Server中触发“GROUP BY”问题会导致单个细粒度行返回到SQL Server并在Informix上聚合那里的情况吗?就我而言,这就是天启。
在我应该注意的这种情况下使用链接服务器是否存在其他(不良)性能影响(并尝试简化解决方案并转到客户端> Informix)?
谢谢!
答案 0 :(得分:9)
如果您直接从SQL Server使用链接服务器,请使用以下形式:
SELECT Col1, col2, col3, SUM(col4)
FROM LinkedServer.Database.schema.Table
GROUP BY Col1, col2, col3
然后它将在SQL Server上执行聚合。但是,如果您使用OPENQUERY
或OPENROWSET
,它将在链接服务器上执行查询,然后将数据检索到SQL Server:
SELECT *
FROM OPENQUERY(LinkedServer, '
SELECT Col1, col2, col3, SUM(col4)
FROM Database.schema.Table
GROUP BY Col1, col2, col3')