【问题标题】:What is the best algorithm to join and process many records in database? [closed]连接和处理数据库中许多记录的最佳算法是什么? [关闭]
【发布时间】:2013-04-16 13:14:27
【问题描述】:
  • 我有 db1 和 table1(200k-400k,未来 700K-800K,但不会很快)和 db2 和 table2(1M - 2M,每年增加 500K-700K)。
  • 我需要处理 db1.table1 中的所有记录,并且对于每条记录我需要在 db2.table2 中执行子查询。
  • 记录处理应在应用服务器上的多个线程中同时进行。

我想到了两种策略:

  1. 加入表(或使用子查询选择),保存到临时表并从应用服务器迭代。
  2. 从应用服务器迭代 db1.table1 并为每一行(或批处理)执行子查询。

什么是最好的方法,为什么?

【问题讨论】:

  • 你说的是什么“处理”?您必须在另一个表中执行什么样的子查询?
  • 执行业务和应用逻辑,例如计算并存储结果到数据库或发送通知...子查询是简单的带谓词的选择。
  • 子查询为主表的每一行返回几行

标签: sql-server database architecture


【解决方案1】:

为了性能,您应该创建连接这两个表的单个查询。

如果您的表位于不同的服务器上,则在它们之间使用create database link,或者更好的是,重构您的设置,使您的表成为同一数据库的一部分。

在任何情况下,请务必创建适当的索引并通过EXPLAIN PLAN 运行查询,以发现可能的瓶颈并避免顺序扫描。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 2016-05-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多