2012-03-18 11 views
1

私はオンラインノートWebアプリケーションをコーディングしており、200文字から非常に長いメモ(~10000文字以上)までのメモをサポートしたいと考えています。これらのメモは検索可能でなければなりません。長いテキストを格納する

  • テキストメモをデータベースに保存するにはどうしたら、すべてのメモに同じテーブルを使用するとアプリケーションが遅くなるのですか?
  • 複数の種類のメモ(短いもの、長いもの、非常に長いものなど)を実装し、異なる表を使用する必要がありますか?
  • 5000文字までのメモにデータベースエントリの代わりにファイルを使用する必要がありますか?
  • これらのメモを使ってテキスト検索を処理するにはどうすればよいですか(別のテーブルやファイルに保存する場合)

答えて

4

MySQLではすべてが10,000文字ではありません。 TEXT列を使用して最大2 バイトを格納できます。テキストがASCIIの場合はこれで十分です。 Unicodeの場合、LONGTEXTフィールドを使用してレコードあたり最大2 バイトを格納できます。

異なる音符長の別々のテーブルを設計するのは悪い考えです。これは、より困難なクエリを行います。

MySQLもfull text searchingをサポートしています。 ISAMテーブルを作成する場合は、メモフィールドにFULLTEXTインデックスを作成して検索速度を向上させることができます。詳細はFULLTEXTmanual page for CREATE TABLEで検索してください。

2
  • mysqlのではありません
  • 使用フルテキスト検索または少し遅くなりちょうどLIKE '%検索%'。

この種類のドキュメントは、現代のデータベースに邪魔されているだけであり、それを心配する必要はありません。

4

テーブルを1つ使用し、TEXTカラムを1つ使用します。それは完全に適切です、MySQLは汗をかくことなくそれを処理することができます。中高度の検索機能を利用するには、FULLTEXTというインデックスを付けてください。

+1

TEXT列は、65536バイトまでのメモを処理できます。 OPは10,000文字以上のメモを保存しています。キャラクタセットと10Kを超えた場合に応じて、代わりにLONGTEXT列を使用する価値があります。また、FULLTEXTはISAM(およびMySQL 5.6のInnoDB)テーブルでのみ利用可能です。 –

+0

良い補遺は、私がこれを書いたときにドキュメントの詳細を参照することができませんでした。 – deceze

関連する問題