INSERT INTO SELECT文で挿入先テーブルに存在しないレコードのみ検索することはできますか。
IGNOREを使えば、挿入先テーブルに存在するレコードは無視されるのでエラーは回避できるのですが、IGNOREに頼らずに、挿入先テーブルにすでに存在するレコードは検索しないようにSELECT文を書けば、数件の検索で済むため圧倒的に高速化できると思うのです。
挿入先テーブルは、主キー1、主キー2、主キー3、主キー4、値1の5カラムで構成されています。
主キー1 NOT IN(SELECT 主キー1 FROM table)
OR 主キー2 NOT IN(SELECT 主キー2 FROM table)
OR 主キー3 NOT IN(SELECT 主キー3 FROM table)
OR 主キー4 NOT IN(SELECT 主キー4 FROM table)
感覚的な話で恐縮ですが、やりたい事はこんな感じで、これだと多分うまくいきません。
DBはmysql-5.1.39-4.fc12.i686です。
No.1ベストアンサー
- 回答日時:
> 数件の検索で済むため圧倒的に高速化できる
その分のオーバーヘッドを考えればignoreの方が圧倒的に有利だと思います
代替案が浮かばないため、今はIGNOREで運用しています。
今のところINSERT処理は数分で終了するので、このぐらいなら離席しないで待っていられるのですが、今後件数がどんどん増えていくと、しんどいので何か代替案がないかと考えています。
おっしゃる通り、検索条件が複雑なためかなりのオーバーヘッドがかかると思いますが、もしうまいSELECT文を考えていただけたら、実際に流して処理時間を計測してみたいのです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Oracle SQLについて教えて下さい。 主キーを持ったカラムを主キーの機能を持たせたまま カンマ区切りで文字列 1 2023/03/27 22:47
- Access(アクセス) MAXで0が出力される 1 2022/03/31 21:43
- PHP コメント機能に返信欄を矢印で追加したい 1 2022/05/09 21:17
- Oracle 下記のsqlで取得されるレコード以外を取得する方法ありますでしょうか。 SELECT B.番号, B 2 2022/04/20 23:21
- MySQL エラー 1068 (42000): 複数の主キーが定義されていますエラー 2 2022/11/17 04:36
- Oracle SQL update方法 2 2022/06/22 14:07
- MySQL 共通点はあります。何が違うのでしょうか? 1 2023/01/27 05:22
- PHP クエリObjectをforeachで回す時に、次のレコードへ移動せずに次のレコードを取得したい 2 2022/07/28 15:29
- PostgreSQL 列が存在しないと言われる 2 2023/02/10 18:33
- その他(プログラミング・Web制作) ラズパイ上の、pythonのエラーについて 1 2023/04/12 23:27
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
一つ前に戻るには…
-
複数の列にまたがってユニーク...
-
SQLです!!教えてください。
-
Accessでデータシートに同じデ...
-
L2SWはARPテーブルを持っている?
-
Accessのテーブルデータを一気...
-
accessでレコード更新直後の反...
-
処理の途中で停止させ、再開さ...
-
同一テーブルのデータを参照し...
-
SQL 複数テーブルのupdate
-
テーブル名をカラムとして取得...
-
テーブルで一番古いレコードだ...
-
トリガって、自分自身のテーブ...
-
SQL、2つのテーブルで条件一致...
-
SQLにて指定日付より前、かつ最...
-
男性と2人で飲食店に行きテーブ...
-
このテーブルで
-
結合テーブルでINSERTする方法...
-
LONG型の先頭250バイトを Varch...
-
会社の飲み会の幹事になり、座...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
一つ前に戻るには…
-
mysqlのフィールド名
-
最大値を持つレコードを削除したい
-
mysqlでJOIN文
-
1列について重複行を除いて全列...
-
グループからランダムに抽出す...
-
mysqlで外部キーをつけたカラム...
-
SQL一発でカレンダー表示は可能...
-
矛盾していないでしょうか?
-
ビューに追加・削除が出来ません。
-
1000万件のデータをmysqlで効率...
-
テーブルが作成できない
-
挿入先テーブルに存在しないレ...
-
【ストアドプロシージャ】条件...
-
SQL内でループさせるような検索文
-
MySQL INSERT文 エラー
-
mysqlのデータベースを復元した...
-
Waiting for table lockエラー...
-
PHP上のSQLで、SELECT文をいく...
-
複数の列にまたがってユニーク...
おすすめ情報