如何优化小表和大表之间的连接?

时间:2016-07-21 16:19:50

标签: database join

需要加入一个小型数据库(一台机器n1)和一台非常大的数据库(在机器n2上,有十亿条记录)。 应用服务器需要将数据从db服务器读入内存。 它应该首先读取小数据库吗?然后从第二个db读取?

如何最快地执行此连接? 一般来说,这在现实生活中是如何完成的?

1 个答案:

答案 0 :(得分:0)

通常,您应该尝试将处理推送到数据库中。也许大型数据库服务器可以将小型数据库服务器拉到本地并处理服务器上的所有内容。

如果要在应用程序中进行处理,通常的最佳策略是执行散列连接。将小数据集转换为哈希表。然后,您可以针对该哈希表探测大数据集中的项目。这需要很少的内存,很少的CPU,你可以流式传输大数据集。

如果连接条件相等(例如Orders.CustomerID = Customers.ID)并且两个集合中的一个足够小以适合内存,则此策略始终有效。