我正在尝试将两个相对简单的表连接在一起,但我的查询遇到了严重的挂断.我不确定为什么,但我认为它可能与'between'功能有关.我的第一个表看起来像这样(有很多其他列,但这将是我拉的唯一列):
RowNumber
1
2
3
4
5
6
7
8
Run Code Online (Sandbox Code Playgroud)
我的第二个表"将"行"分组"为"块",并具有以下架构:
BlockID RowNumberStart RowNumberStop
1 1 3
2 4 7
3 8 8
Run Code Online (Sandbox Code Playgroud)
我想要的结果是将RowNumber与BlockID链接如下,与第一个表的行数相同.所以结果看起来像这样:
RowNumber BlockID
1 1
2 1
3 1
4 2
5 2
6 2
7 2
8 3
Run Code Online (Sandbox Code Playgroud)
为了得到它,我使用了以下查询,将结果写入临时表:
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
Run Code Online (Sandbox Code Playgroud)
TABLE_1和TABLE_2实际上是非常大的表.表1大约是122M行,而TABLE_2大约是65M行.在TABLE_1中,RowNumber被定义为'bigint',而在TABLE_2中,BlockID,RowNumberStart和RowNumberStop都被定义为'int'.不确定是否有所作为,但也只是想包含这些信息.
该查询现已挂了八个小时.对这种类型和数据量的类似查询不会花费这么长时间.所以我想知道它是否可能是挂起此查询的'之间'声明.
绝对欢迎任何有关如何提高效率的建议.