我有两个表,每个表有5000万个唯一行。
一个表中的行号对应于第二个表中的行号。
即 第一个表中的第一行与第二个表中的第一行连接,第一个表中的第二行与第二个表中的第二行连接,依此类推。进行内部联接是昂贵的。
集群需要5个多小时。有没有一种有效的方法在SQL
中执行此操作?
答案 0 :(得分:2)
首先:表格只是集合。所以记录的行号可以认为是纯粹的巧合。您不得基于行号连接两个表。所以你会加入ID而不是行号。
没有比简单的内部联接更有效的了。由于必须读取整个表,你甚至可能从索引中获得任何东西(但是当我们谈论ID时,无论如何都会有索引,所以我们不得不思考)。
根据DBMS,您可以并行化查询。例如,在Oracle中,您将使用/*+ parallel( tablename , parallel_factor ) */
等提示。
答案 1 :(得分:0)
尝试按行对两个表进行排序(如果没有排序),然后使用普通SELECT(也许你可以使用LIMIT来逐个获取它)两个表和数据逐行连接无论你想要什么