【问题标题】:Advantages / Disadvantages of OPENQUERY versus performing operations on code levelOPENQUERY 与在代码级别执行操作的优点/缺点
【发布时间】:2011-03-14 22:00:58
【问题描述】:

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

编辑

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

【问题讨论】:

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


    【解决方案1】:

    就个人而言,如果可能的话,我会使用单个查询 - 它会减少您与服务器之间的带宽和延迟(服务器是整个画面中速度较快的部分)

    这还取决于您使用 OPENQUERY 执行的操作。您是否正在组合来自两个查询的数据?它们是否相关?如果它们是 - 你真的应该在 OPENQUERY 的 JOIN 中将它们链接起来,而不是尝试在前端执行复杂的连接。

    【讨论】:

      【解决方案2】:

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

      当您将它们组合到您的代码中时,您应该自己实现所有这些。

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

      好处是您可能比 Microsoft 开发人员更有效地做到这一点。

      很容易看出,坏处是肯定的,好处是模糊的。

      【讨论】:

        【解决方案3】:

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

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

        “视情况而定”:

        • 使用频率
        • OPENQUERY 的性能
        • 数据波动性
        • ...

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-07-17
          • 2012-05-07
          • 2016-10-29
          • 2023-04-04
          • 2019-04-03
          • 1970-01-01
          相关资源
          最近更新 更多