• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHP + MySQL で登録時に重複チェックをしたいです。)

PHP + MySQL で登録時に重複チェックをする方法

このQ&Aのポイント
  • PHP + MySQL で大量のレコードを登録する際、重複チェックを効率的に行いたい場合について考えます。現在の方法では、配列を回しSELECT文で件数チェックを行っていますが、サーバーに負担が掛かる可能性があります。より効率的な方法についてご教示いただきたいです。
  • PHP + MySQL で大量のレコードを登録する際に、重複チェックを効率的に行いたいと考えています。現在は配列を回しSELECT文で件数チェックを行っていますが、サーバーの負担が心配です。他に効率的な方法があれば、教えていただきたいです。
  • PHP + MySQL を使用して大量のレコードを登録する際、重複チェックを行う方法について考えます。現在の方法では、配列を回しSELECT文で件数チェックをしていますが、サーバーに負担がかかるかもしれません。他の方法で負担を減らす方法があれば教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • mpx
  • ベストアンサー率71% (149/209)
回答No.1

他の方法の例として、 DBにて、"Title" をunique keyにして、登録時に、 INSERT IGNORE INTO table_name 構文を使ってINSERT する では如何でしょう。 Mysqlが、勝手に重複しいれば無視して、重複がなければ登録してくれます

0xxxYuMixxx0
質問者

お礼

これでうまくいきました!! ありがとうございました!

その他の回答 (3)

回答No.4

肝心なことを書き忘れた。 Titleがユニークキーの設定をしているならならINSERT IGNORE INTOを使えば重複キーに対しては挿入処理が行われないように処理できます。

回答No.3

>1)重複チェックのSQL文を工夫する > 例) > × select * from bookshelf where Title='hoge'; > ○ select 1 from bookshelf where Title='hoge'; 普通にcount()関数使った方が良いですから >ただこれですと、どうしてもサーバーに負担が掛かってしまう気がするのです。 そうとうショボイサーバでなければ100件程度ならそれほど問題はないでしょう。

noname#256686
noname#256686
回答No.2

昨今のサーバーであれば、気にするほどの負荷ではないと思いますが、それでもあえて負荷を考えるとすれば、こんな対策くらいでしょうか。 1)重複チェックのSQL文を工夫する  例)  × select * from bookshelf where Title='hoge';  ○ select 1 from bookshelf where Title='hoge';  データを取得する必要はないため、SELECT文の列名部分を固定値にすることで  負荷を若干軽減できます。 2)登録のSQL文を一括実行する  ループのたびに1件1件実行するのではなく、実行して良い配列にマーク等をつけ、  最後に一括でinsert文を発行することで負荷を軽減します。 3)そもそも重複チェックをしない  これはかなり強引な方法ですが、テーブルスキーマのほうでTitleをユニークな列  として構成し、登録プログラムでは重複チェックをせず、insert文を発行します。  当然、ランタイムエラーが発生するため、@mysql_queryというようにエラーを表示  しない工夫等が必要です。 いずれにせよ、サンプルプログラムを作って実際に実機でテストするのが一番です。たぶん、今のままでも危惧するほどの負荷はかかりませんよ。

関連するQ&A