複雑にしないでおく!真剣に。
圧倒的多数のテキスト項目が 255 文字以下でない限り、または を使用してTEXT
くださいLONGTEXT
。複雑なデータ構造をいじるのではなく、テキストで面白いことをすることに時間を費やしてください。今すぐプロジェクトを完了してください。後で最適化します。
ディスク ドライブと RAM は、あなたの時間よりもはるかに速く安くなります。
アプリの要件で、テキスト データではなく、簡潔さと検索可能性のために varchar データを使用することが絶対に必要な場合は、次の手順を実行できます。
article
テキスト記事ごとに 1 行のテーブルを作成します。タイトル、著者、article_id
.
のような名前の 2 番目のテーブルを作成しますarticle_text
。おそらく、4 つの列があります。
article_id foreign key to article table.
language a language code, if you happen to store translations of articles
ordinal a sequence number
textfrag varchar(255) part of the text.
各記事のテキストarticle_text
を昇順の一連の行に格納しordinal
ます。それぞれtextfrag
最大 255 文字のテキストを保持します。記事のテキストを取得するには、次のようなクエリを使用します。
SELECT textfrag
FROM article_text
WHERE language = 'en_US' /* or whatever */
AND article_id = 23456 /* or whatever */
ORDER BY ordinal
次に、一連の行をフェッチし、textfrag
アイテムのコンテンツを連結すると、有効な長さ制限のない記事ができます。すべてのフィールドを含むインデックスを作成すると、すべての検索がインデックスから行われるため、検索時間が非常に速くなります。
(article_id, language, ordinal, textfrag)
最善を尽くしてテキストを単語境界でフラグメントに分割し、MyISAM を使用し、FULLTEXT インデックスを使用すると、非常に効果的な全文検索システムが得られます。