フォーラム用の DB を設計する必要があります。さまざまな理由から、ルート投稿をサブ投稿から分離しています。パフォーマンスの観点からも、ユーザーが入力するテキストを最適に検索できるようにする必要があります。
私の質問は、各テーブル (ルート投稿とサブ投稿) を 2 つのテーブルに分割する必要があります:
root-posts_meta (id、作成時間、ビューなどのデータを保持します
) ) 全文索引付き
sub-posts テーブルと同じ考え方です。
ありがとう。
フォーラム用の DB を設計する必要があります。さまざまな理由から、ルート投稿をサブ投稿から分離しています。パフォーマンスの観点からも、ユーザーが入力するテキストを最適に検索できるようにする必要があります。
私の質問は、各テーブル (ルート投稿とサブ投稿) を 2 つのテーブルに分割する必要があります:
root-posts_meta (id、作成時間、ビューなどのデータを保持します
) ) 全文索引付き
sub-posts テーブルと同じ考え方です。
ありがとう。
TEXT
とにかく、フィールドは行外に格納されます。
テーブルを分離しても、クエリの読みやすさもパフォーマンスも向上しません。
ひとつのテーブルにまとめたほうがいいです。
InnoDB には FULLTEXT サポートがないため、何らかのトランザクション サポートが必要な場合、この分離を回避する方法はありません。
mysql-全文
詳細な説明: InnoDB には全文がなく、MyIsam には TX サポートがありません。SOを例にとってみましょう。各質問エンティティには、投票数、それを更新するユーザー、変更の履歴があります (私のシステムには他にも多くのことがあります。私がしていることのビジネス ロジックには立ち入りません)。これらのフィールドの多くは、他のテーブルの他の変更 (つまり、1 つのトランザクションでの変更) と併せて、エンティティの存続期間中に変更する必要があります。また、データ フィールドの全文サポートが必要です。
トランザクションのサポートが重要な場合は、データ用に 1 つのテーブルを使用し、全文検索用にSphinxのようなものを使用できます。
分離が検索性や検索パフォーマンスに影響することはありません。それが唯一の懸念事項である場合は、それぞれを単一のテーブルのままにしておくこともできます。