SELECT id FROM A LEFT OUTER JOIN B ON A.id=B.id WHERE B.id IS NULL
あなたはこれを行うことができます。外側の結合は少しパフォーマンスをもたらすはずですが、それほどではありません。
新しいデータベースシステムは、おそらくクエリを最適化して、違いがないようにします。
ここでの正しい方法はキャッシングです!可能であれば、クエリキャッシャーとアプリケーションレベルのキャッシュを試してください。
もちろん、適切なインデックスが必要です。
そして、適切には、両方のテーブル、できればハッシュインデックスを意味します。これは、対数を持つツリーと比較して静的なルックアップ時間が発生するためです。
クエリの前に説明を入れて、これが実際に遅くなる原因を確認してください。
これを本当に高速にする必要がある場合は、データ構造を再構築できます。
テーブルbeに対応するエントリがあるかどうかに関係なく、テーブルAにフラグをマークするトリガーを作成できます。もちろん、このIDデータの冗長性はありますが、それだけの価値がある場合もあります。キャッシングと考えてください。
最後に考えたのは、SELECT id FROM A WHERE id NOT IN (SELECT id FROM B)
を試すことです。 実際の結合が必要ないため、少し速くなる場合がありますが、一連のルックアップがフルスキャンになるため、遅くなる場合もあります。これがどのように処理されるかはよくわかりませんが、試してみる価値があるかもしれません。