「すれ立てるまでもない・・」から移動してきました。
データベース設計で2テーブル間に多対多のリレーションを張りたいんですが
リレーションが設定されていないレコードを効率よく SELECT できるような
設計が思いつかずに困っています。今は次のようにしています。

CREATE TABLE TABLE_A (
  TABLE_A_KEY INTEGER NOT NULL PRIMRY KEY,
  :
);

CREATE TABLE TABLE_B (
  TABLE_B_KEY INTEGER NOT NULL PRIMARY KEY,
  :
);

CREATE TABLE RELATION_AB (
  TABLE_A_REF INTEGER NOT NULL FOREIGN KEY REFERENCES ON TABLE_A (TABLE_A_KEY);
  TABLE_B_REF INTEGER NOT NULL FOREIGN KEY REFERENCES ON TABLE_B (TABLE_B_KEY);
);

この状態で、

SELECT * FROM TABLE_A WHERE TABLE_A_KEY NOT IN (SELECT TABLE_A_REF FROM RELATION_AB);

というクエリーを投げると当然ながら悶絶するほど処理が遅いのです。
こういう場合に有効なデザインにはどのようなものがあるのでしょうか?