MySQL でデータベースを次の仕様に合わせて設計するとします。
1) 2,500万件以上のレコード
2) 番地、通り、町、市、郵便番号の列
3) 通り、町、都市、郵便番号は全文検索可能である必要があります (フロントエンド側では、検索はテキスト入力フィールドから AJAX で実行され、すぐにドロップダウン結果が表示されます)。
上記をどのように設計しますか?
私は単一のテーブルで作業することを考えていました - これは悪い考えですか? これが住所データであるため、異なるテーブル間で正規化するかどうかはわかりません。また、単一のテーブルで作業する場合、検索可能なフィールド全体で FULLTEXT インデックスを作成することも考えています。
これほど大規模な DB を扱ったことはありません。上記は悪い考えですか?
更新#1:
実際に検索される唯一のものである番地と郵便番号の列を正規化することにしました (元の仕様を再確認しました)。簡単な計算を行ったところ、通りの名前のカーディナリティはデータ セット全体の 2% で、郵便番号は 6% だったので、これが最善の方法だと思います。
現在、2,900 万行のインポートを実行しています - 約 5 時間かかります。この質問を締めくくるために、後でパフォーマンステストを再度更新します。