2 つの比較的単純なテーブルを結合しようとしていますが、クエリで深刻なハングアップが発生しています。理由はわかりませんが、「between」機能と関係があるのではないかと思います。私の最初のテーブルは次のようになります(他の多くの列がありますが、これは私が引っ張っている唯一の列です):
RowNumber
1
2
3
4
5
6
7
8
2 番目のテーブルは、行を「ブロック」に「グループ化」し、次のスキーマを持ちます。
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」として定義されます。それが違いを生むかどうかはわかりませんが、その情報も含めたかっただけです。
クエリは 8 時間ハングアップしています。このタイプと量のデータに対する同様のクエリは、これほど長い時間はかかりません。したがって、このクエリをハングアップさせているのは「before」ステートメントである可能性があるのではないかと考えています。
これをより効率的にする方法についての提案を歓迎します。