2
私は2つのテーブルをアクセスしており、共通の列(dest)に基づいて結合を行う必要があり、テーブルAのそれと等しいかそれより前のテーブルB 。クエリにアクセスして2つのテーブルを結合する最短時間に基づく
券(表A)
ID | dest | land
1 | SUN | 1/1/2017 8:52:00 AM
2 | SEA | 1/1/2017 4:39:00 AM
天気(表B)
ID | dest | time | vis
1 | SUN | 1/1/2017 8:15:00 AM | 10
2 | SUN | 1/1/2017 8:35:00 AM | 5
3 | SUN | 1/1/2017 8:55:00 AM | 2
4 | SEA | 1/1/2017 2:48:00 AM | 7
5 | SEA | 1/1/2017 3:52:00 AM | 10
6 | SEA | 1/1/2017 4:49:00 AM | 2
所望の結果(表C)
ID | dest | land | time | vis
1 | SUN | 1/1/2017 8:52:00 AM | 1/1/2017 8:35:00 AM | 5
2 | SEA | 1/1/2017 4:39:00 AM | 1/1/2017 3:52:00 AM | 10
私は 'dest'と最も近い時間の両方に参加する方法につきました。表Aには約25,000行、表Bには約100,000が含まれています。私はこのようにそれを行うだろう
感謝を。私は最初のオプションを試して、 'time <= flights.land'の部分が含まれていたときにクエリを完了することができませんでした。クエリは実行されますが、少量のデータでも完了することはありません。 2番目のソリューションをINNER JOINで使用すると、わずかなデータセットで〜4分で完了しますが、21分後に完全なデータセットを使用すると、まだ完全ではありませんでした。それを高速化するための提案、またはおそらく2ステップのプロセスですか?私は、クエリで使用されたフィールドのインデックスを作成しました。 –
両方のテーブルの 'dest'カラムと、フライトテーブルの' land'カラムと天気表の 'time'カラムのインデックスが必要です。私は 'ID'がプライマリキーであると仮定します - それでインデックスは必要ありません – cha