OPENQUERY的优点/缺点与在代码级别执行操作相比

时间:2011-03-14 22:00:58

标签: .net asp.net sql sql-server

通过对不同的数据库执行2个单独的查询并在代码级别执行操作,可以获得相同的最终结果时,使用OPENQUERY在一个sql查询中组合2个数据库的主要优点和缺点是什么?我必须做到这一点,我有两种选择。感谢。

修改

为了进一步说明,使用OPENQUERY sql的过程将在一天内运行,以维护产品目录并从2个不同的数据库连接数据。一个数据库有我需要的实时数据,另一个有我需要的描述性信息。

3 个答案:

答案 0 :(得分:1)

就个人而言,如果有可能,我会使用一个查询 - 它会减少您和服务器之间的带宽和延迟(服务器是整个图片中较快的部分)

这还取决于你在使用OPENQUERY做什么。你在组合两个查询的数据吗?它们是相关的吗?如果它们是 - 你应该真正将它们连接到OPENQUERY中的JOIN而不是尝试在前端执行复杂的连接。

答案 1 :(得分:1)

使用OPENQUERY组合两个数据集时,让SQL Server选择连接算法,进行提取,分配和释放内存和临时磁盘空间,以表格形式显示结果并执行其他一千个小事。

当你在代码中组合它们时,你应该自己实现所有这些。

缺点是从头开始实施这些事情需要大量的时间和精力。

好处是您可能比Microsoft开发人员更有效地执行此操作。

可以很容易地看出,这些缺点是肯定的,并且模糊的可能性很大。

答案 2 :(得分:1)

如果只是偶尔运行,我倾向于OPENQUERY让RDBMS解决问题(根据Quassnoi的回答)。例如,批量批处理或报告。

考虑到OPENQUERY的潜在(非实际)问题,我会经常或在高峰时间对它进行操作时保持警惕。在这种情况下,我还会考虑定期将OPENQUERY数据暂存到本地表中并使用此本地表。

“这取决于”:

  • 使用频率
  • OPENQUERY的表现
  • 数据波动
  • ...