速度が重要な予測ダイヤラーを構築しています。番号をダイヤルするには、テーブルから顧客情報を取得し、pbx が処理する呼び出しファイルを作成します。
現在は市外局番ごとに表を作っており、市外局番ごとにダイヤルしていますが、複数の郵便番号にまたがる地域ごとにダイヤルするモデルに切り替えています。一部の市外局番は、複数の郵便番号に存在します。各テーブルには毎月新しい番号が追加され、数百万の番号の通話禁止リストと比較してスクラブされます。
私の質問は、このデータを最も効率的に整理するにはどうすればよいですか?
スクラブされたデータの何百万ものレコードについて話しているので、1 つの大きなテーブルは非生産的です。
私の現在の推論は、インポートとスクラブのために市外局番テーブルを維持し、スクラブされたレコードを地域テーブルにコピーすることです。このテーブルは、市外局番テーブルでその地域の郵便番号を検索することによって作成されます。
私は現在、auto_incremented INT プライマリ キー、一意の電話番号、および既に呼び出された番号または発信禁止リストにある番号を追跡するステータスによって、テーブルのインデックスを作成しています。通話ファイルを作成するときは、レコードをキューに登録済みとしてマークし、完了した通話の進行状況に応じてマークを付けます。そのため、通話ごとに検索と 2 回の更新が行われます。
検索では、市外局番テーブルで特定のステータスが検索されます。更新は、レコード ID に基づいて行われます。
質問の要点は次のとおりです。郵便番号で整理してステータスで検索するか、市外局番で整理してステータスと郵便番号で検索する方が速いでしょうか? それとも、市外局番テーブルから構築された地域を設定するたびに、新しいテーブルを作成する方がよいでしょうか?
これがばかげた質問のように思われる場合は、ご容赦ください。私はこれを構築しているときに SQL を独学してきました。データベースの設計とパフォーマンスのニュアンスは、私のスキルセットを少し超えています。
テーブルの合計サイズは 200 万行で、さらに増え続けています。