2011-10-19 41 views
1

私は自分のテーブルのどのデータベースエンジンを選ぶべきか、本当に迷っています。MYSQL innodbまたはmyisam?どのケースがこのケースに最適ですか?

+-----------------------+ 
| id | userid | content | 
+-----------------------+ 

この表を想像してください。 useridは、別のテーブルに格納されているユーザーIDを保持しています。また、このテーブルのidフィールドを使用している他のテーブルもあります。したがって、プライマリキーとしてのIDと外部キーとしてのユーザーIDを設定すると、結合プロセスが高速化されると考えました。しかし、テーブルをInnoDBとして選択して外部キーを設定すると、(TEXTフィールドである)コンテンツに対してFULLTEXT検索を実行できません。

基本的に、FULLTEXT検索を使用するMyISAMに切り替えると、何億もの行の3-4のテーブルに参加するときに問題が発生しますか?

PS:ジョインとフルテキストの両方を処理するためのテーブルを作成する別の義務的な方法がある場合は、教えてください。テーブル構造も変更できます。

答えて

1

InnoDBはMyISAMよりも優れています。数億の行について話しているなら、InnoDBに行き、検索エンジンを適合させてください。 AFAIK、FULLTEXTはある点の後に本当に遅くなります。したがって、あなたが選んだ検索エンジンであるInnoDB +に行ってください。

3

この質問に対する答えを見てみましょう:あなたはそれに書き込むときに、テーブルへの書き込みの多くを持っているときには、パフォーマンスのために悪いとなりますので、要するにFulltext Search with InnoDB

は、MyISAMテーブルは、テーブル全体をロック。解決策は、参照整合性のためにInnoDBテーブルを調べ、コンテンツの索引付け/検索のために専用の検索エンジンを使用することです(Luceneなど)。

関連する問題