7

女士们先生们——

我正在与建议在 SQL Server 中针对(Informix)使用链接服务器的人合作。

他们发现(出于未知原因)在连接到 SQL 的客户端工具和 SQL Server 将 SQL 语句代理到 Informix 然后将客户端工具直接指向 Informix 时,他们的运气更好。我的想法当然是“解决客户端 > Informix 连接问题,不要使用黑客”——但这不是重点,您可能无法真正协商。

话虽如此,这种方法在性能方面有什么危险?

  • 所有查询都将访问 Informix 上的单个数据库,我们不需要在原生 SQL 表和 Informix 之间执行任何异构 JOIN。SQL Server 实际上只是充当代理/数据泵。
  • 大多数正在执行的查询也将进行大量的 GROUPing 和聚合,因此(幸运的是)我们不会在框之间移动大量的行。

我的问题:

任何人都可以识别在 SQL Server 上触发的“GROUP BY”问题会导致单个、细粒度的行返回到 SQL Server 并在那里聚合而不是在 Informix 上聚合的场景吗?就我而言,这就是世界末日。

在我应该注意的这种情况下使用链接服务器是否存在其他(不良)性能影响(并用作尝试简化解决方案并转到客户端> Informix 的方式)?

谢谢!

4

1 回答 1

9

如果您直接从 SQL Server 以以下形式在查询中使用链接服务器:

SELECT Col1, col2, col3, SUM(col4)
FROM LinkedServer.Database.schema.Table
GROUP BY Col1, col2, col3

然后它将在 SQL Server 上执行聚合。但是如果你使用OPENQUERYor OPENROWSET,那么它将在链接服务器上执行查询,然后将数据检索到 SQL Server:

SELECT *
FROM OPENQUERY(LinkedServer, '
SELECT Col1, col2, col3, SUM(col4)
FROM Database.schema.Table
GROUP BY Col1, col2, col3')
于 2012-06-01T19:57:56.630 回答