MySQLデータベースに接続して情報を取得するVBAプログラムを備えたExcelがあります。最初に、プログラムが読み込まれると、次のクエリが表示されます。
SELECT A.id,A.first_name,A.last_name FROM Table1 A WHERE A.ID NOT IN(SELECT DISTINCT
SUBJECT FROM Table2)
表 1 には、次のようなデータがあります。
- 1 クリスチャン・ベール
- 2 クリストファー・ノーラン
- 等
表 2 には、次のようなデータがあります。
- 1 act_in バットマン
- 2 監督のバットマン
- 等
上記のクエリは、テーブル 2 の合計行数が少ない限り問題なく機能します。ただし、現在、データにはテーブル 1 に 26000 行、テーブル 2 に 102000 行あります。したがって、プログラムで上記のクエリを実行すると、クエリの実行に約 30 分かかり、場合によっては正しく実行されません。以下のクエリも試しましたが、時間がかかります。
SELECT A.id, A.first_name, A.last_name FROM Table1 a
WHERE NOT EXISTS
(
SELECT 1
FROM Table2 al
WHERE a.id = al.subject
)
クエリを言い換える効率的な方法はありますか?