0

大量メール送信者のアプリケーションを維持する必要があります。最後のプログラマーは良い仕事をしましたが、上司はデータベースの処理を少し最適化できると感じています。キャンペーンが終了すると、レポートには、選択したセグメントを保存するオプションが表示されます。たとえば、50000 通の電子メールを送信し、ニュースレター (2000 年) を開いた人々のセグメントを保存したいとします。このツールは、連絡先を複製する新しいセグメントを作成するようになりました (INSERT を使用) が、保存することでツールを改善できると思います各連絡先の ID。

SQL IN ステートメントを使用して連絡先を保存するとツールのパフォーマンスが向上するかどうか、またはこれを実行する別の方法があるかどうかを知りたいです。何かのようなもの:

  1. 連絡先の ID のリストを作成する SELECT * FROM 連絡先

  2. SELECT * FROM contacts WHERE idContact IN (all_contacts_comma_separated) --> これを保存します

前もって感謝します

PD: これは本番環境なので、変更を加える前に確認する必要があります :-(

4

1 に答える 1

1

メールを開封した人のリストが現在どこにあるのか、あなたは言いませんでした。INデータベースにない場合、ステートメント リストを生成するためにどのコード/プロセスを使用しますか? JOINデータベースにある場合、テーブルで情報を取得しないのはなぜですか?

INいずれにせよ、リストに 2000 個のアイテムがある場合に使用することはお勧めしません。

以下も読む価値があるかもしれません。

SQL Server: JOIN vs IN vs EXISTS - 論理的な違い

これはSQLサーバーを念頭に置いて書かれています(すべてがMySQLに直接当てはまるかどうかはわかりません)が、概念は興味深いものであり、eggyalのコメントが示唆しているように、本番環境を変更する前にテストを実行する必要があります.

于 2012-10-14T22:37:57.290 に答える