加入50万查询一对一行

时间:2014-09-08 09:07:50

标签: sql request

我有两个表,每个表有5000万个唯一行。

一个表中的行号对应于第二个表中的行号。

第一个表中的第一行与第二个表中的第一行连接,第一个表中的第二行与第二个表中的第二行连接,依此类推。进行内部联接是昂贵的。

集群需要5个多小时。有没有一种有效的方法在SQL中执行此操作?

2 个答案:

答案 0 :(得分:2)

首先:表格只是集合。所以记录的行号可以认为是纯粹的巧合。您不得基于行号连接两个表。所以你会加入ID而不是行号。

没有比简单的内部联接更有效的了。由于必须读取整个表,你甚至可能从索引中获得任何东西(但是当我们谈论ID时,无论如何都会有索引,所以我们不得不思考)。

根据DBMS,您可以并行化查询。例如,在Oracle中,您将使用/*+ parallel( tablename , parallel_factor ) */等提示。

答案 1 :(得分:0)

尝试按行对两个表进行排序(如果没有排序),然后使用普通SELECT(也许你可以使用LIMIT来逐个获取它)两个表和数据逐行连接无论你想要什么