我正在尝试将两个相对简单的表连接在一起,但我的查询遇到了严重的挂起。我不知道为什么,但我认为这可能与“之间”功能有关。我的第一个表看起来像这样(还有很多其他列,但这将是我要提取的唯一列):
RowNumber
1
2
3
4
5
6
7
8
我的第二个表将我的行“分组”为“块”,并具有以下架构:
BlockID RowNumberStart RowNumberStop
1 1 3
2 4 7
3 8 8
我希望得到的结果是将 RowNumber 与 BlockID 链接起来,如下所示,与第一个表的行数相同。所以结果看起来像这样:
RowNumber BlockID
1 1
2 1
3 1
4 2
5 2
6 2
7 2
8 3
为了得到它,我使用了以下查询,将结果写入临时表:
select A.RowNumber, B.BlockID
into TEMP_TABLE
from TABLE_1 A left join TABLE_2 B
on A.RowNumber between B.RowNumberStart and B.RowNumberStop
TABLE_1 和 TABLE_2 实际上是非常大的表。表 1 大约有 122M 行,而 TABLE_2 大约有 65M 行。在 TABLE_1 中,RowNumber 被定义为“bigint”,而在 TABLE_2 中,BlockID、RowNumberStart 和 RowNumberStop 都被定义为“int”。不确定这会有所不同,但也只是想包含该信息。
查询现在已经挂了八个小时。对这种类型和数据量的类似查询不会花费这么长时间。所以我想知道它是否可能是挂起这个查询的'between'语句。
绝对会欢迎有关如何提高效率的任何建议。