我有两个表,每个表有5000万行。
一个表中的行号对应于第二个表中的行号。
,即第一表中的第一行与第二表中的第一行连接,第一表中的第二行与第二表中的第二行联接等。做内部连接是昂贵的。
它需要超过5个小时的集群。在SQL中有没有一种有效的方法来做到这一点?
发布于 2014-09-08 09:16:38
首先:表只是集。因此,记录的行数可以被认为是纯粹的巧合。不能根据行号连接两个表。因此,您将加入ID,而不是行号。
没有什么比简单的内部连接更有效了。由于必须读取整个表,您甚至可能无法从索引中获得任何信息(但是,当我们讨论ID时,无论如何都会有索引,因此我们不必考虑)。
根据DBMS的不同,您可能能够并行化查询。例如,在Oracle中,您将使用诸如/*+ parallel( tablename , parallel_factor ) */这样的提示。
发布于 2014-09-08 09:13:15
尝试按行对两个表进行排序(如果没有排序),
然后,对两个表使用常规选择(也许可以使用极限逐部分获得)和
数据在任何您想要的地方逐行连接。
https://stackoverflow.com/questions/25720725
复制相似问题