0
  • 我有 db1 和 table1(200k-400k,未来 700K-800K,但不会很快)和 db2 和 table2(1M - 2M,每年增加 500K-700K)。
  • 我需要处理 db1.table1 中的所有记录,并且对于每条记录,我需要在 db2.table2 中执行子查询。
  • 记录处理应该在应用服务器上的多个线程中同时进行。

我考虑了两种策略:

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

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

4

1 回答 1

2

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

如果您的表位于不同的服务器上,请在它们之间创建数据库链接,或者更好的是,重构您的设置,使您的表成为同一数据库的一部分。

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

于 2013-04-16T05:02:29.347 回答