実行している比較の実際のロジックによっては、これらのソリューションが適用できない場合があります。どちらのソリューションも、データを正しく並べ替えることに依存しています
1)二分探索。-バイナリ検索を使用すると、テーブル2のすべてをスキャンしなくても、テーブル2で一致する行を見つけることができます。これにより、比較の数が大幅に削減されます。
2)2つのテーブル間で重複/一致/欠落行を探している場合は、両方のテーブルを同じ順序で並べ替えることができます。次に、各テーブルの現在の行へのポインタを保持しながら、2つのテーブルを同時にループできます。テーブル1がテーブル2の「先行」している場合は、テーブル2のポインタを、それらが等しくなるか、テーブル2が先行するまでインクリメントするだけです。次に、テーブル2が先行すると、先行するまでテーブル1のインクリメントを開始します。このようにして、各テーブルの各レコードを1回ループするだけで、見逃した一致がないことが保証されます。
表1と表2が一致する場合、それは一致です。表1が先行している間、表2のすべての行が表1から「欠落」しており、その逆も同様です。
このソリューションは、行が互いに特定の範囲内にある場合などに何らかのアクションを実行する必要がある場合にも機能します。
3)テーブル2のすべての行に対して、テーブル1のすべての行に対して実際に何らかのアクションを実行する必要がある場合は、ネストされたループが2つだけであり、比較/作業を行う以外に、それを最適化するためにできることはあまりありません。可能な限り効率的。作業内容やボトルネックの場所によっては、マルチスレッド化できる可能性があります。