質問: mysqlでのテーブル分割時の検索手法についてお聞きします。 例えば、1億件の日記データをidによって5000万件ずつ別の テーブル(DiaryTable1, DiaryTable2)に分けるとします。 ※分け方は単純に剰余計算。 Insert時はidから剰余計算で格納先テーブルが分かるのでいいのですが、 全日記データから検索を実行したい場合、 DiaryTable1とDiaryTable2からそれぞれselectを実行し、 アプリ側で結果をマージするという処理しかないと思います。 こうすると、データのソートなどアプリ側の処理がかなり複雑化する気がします。 こういった形で複数にテーブル分割を行っていて、 それら全部からどのように(横断検索とでもいうのですかね?) selectを行い、マージをしているか、いい手法があれば教えて下さい。 ちなみに、環境はMysql5 + php5(adodb) + apacheですが、 環境に依存した回答でなくて構いません。
回答: 分割したDBとは別に、統合したDBを用意するというのはどうでしょうか? ユーザが日記データを更新したときには分割したDBが更新されるので、定期的にバッチ処理で分割したDBと統合したDBの同期をとります。全文検索のときは統合したDBから検索します。 同期がとれるまでは全文検索は最新の状態で検索は出来ませんが、それは仕方ないということで。