2 つのテーブルを持つ Mysql Innodb が与えられました。1 つは 1 億 1,700 万以上の行で、名前、住所、都市、州、郵便番号を含む 340 を超える列があります。2 番目のテーブルは、名前、住所、市区町村、州、郵便番号、電子メールを含む 1,700 万以上の行です。1 番目と 2 番目のテーブルのデータは追加または更新されません。各テーブルの ID には主キーがあります。他のインデックスは定義されていません。
最初に、1 億 1,700 万行以上のテーブルから連絡先テーブルを作成しました。このテーブルには、名前、住所、市区町村、州、および郵便番号だけが含まれており、大幅に小さくなっています。php スクリプトを作成して、1,700 万件以上のレコードからなる小さなテーブルの各行を使用して検索を実行し、連絡先テーブルで一致するものを見つけようとしました。見つかったら、ID とメールを別のテーブルに挿入します。1 回の検索に約 86 秒かかっていたため、キャンセルしました。1,700 万以上のレコードがあるため、完了するまでに永遠に時間がかかります。
これが私の検索クエリです:
q = "GB_contacts から ID を選択 WHERE LAST_NAME=\"$LAST\" および FIRST_NAME=\"$FIRST\" および MI=\"$MIDDLE\" および ADDRESS=\"$ADDRESS\" および ZIP=\"$ZIP\"".
私の質問は、どうすればこれをより速く行うことができますか? 連絡先テーブルの名前、住所、および郵便番号にインデックスを作成する必要がありますか、または連絡先テーブルの各列にインデックスを作成する必要がありますか? mysql を使用してこれを行うより高速な方法はありますか? たくさんのさまざまなリソースを読みましたが、どれが最善の方法なのかわかりません。これらは非常に大きなテーブルであるため、何をしようとしても非常に長い時間がかかるため、専門家のアドバイスを得て、これを理解しようとして数日、数週間、数か月を無駄にしないようにしたいと考えています. 有益なアドバイスをありがとうございます。