1

テーブルにどのタイプのデータベース エンジンを選択すればよいか、本当に迷っています。

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

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

基本的に、MyISAM に戻って FULLTEXT 検索を使用すると、たとえば、数億行の 3 ~ 4 個のテーブルを結合するときに問題が発生しますか?

PS: 結合とフルテキストの両方を処理するテーブルを作成する別の責任ある方法がある場合は、その方法を教えてください。テーブル構造も変更できます。

4

2 に答える 2

3

この質問に対する答えを見てみましょう: InnoDB を使用した全文検索

つまり、MyISAM はテーブルへの書き込み時にテーブル全体をロックするため、テーブルへの書き込みが多い場合はパフォーマンスが低下します。解決策は、参照整合性のために InnoDB テーブルを使用し、コンテンツのインデックス作成/検索に専用の検索エンジン (Lucene など) を使用することです。

于 2011-10-19T12:02:09.610 に答える
1

InnoDB は MyISAM よりもスケーラビリティに優れています。数億の行について話している場合は、InnoDB を使用して検索エンジンを適応させてください。私の知る限り、FULLTEXTは特定の時点で非常に遅くなります。したがって、InnoDB + お好みの検索エンジンを選択してください。

于 2011-12-09T10:28:05.270 に答える