質問:私のWebアプリケーション(php/MySQL)では、リッチテキストを保存します。これは、数語から数ページの長さのエッセイまで何でもかまいません。 VARCHAR
、TEXT
、またはBLOB
を使用して、TinyMCEなどのリッチテキストエディターからのマークダウンまたはHTMLを保存することで、問題を解決できると確信しています。どちらを使用すればよいですか?
これまでの私の調査結果:今週の私の検索では、一般的に最善の決定的な情報源となるものは何も見つかりませんでした。 VARCHAR
は標準であり、TEXT
は標準ではないと思います。 BLOB
はバイナリデータ用なので、やりすぎです。 TEXT
は、一部のDBMSでは廃止される可能性があります。 VARCHAR
がどのようにデータベースに保存されるかについての私の無知を中心に展開している大きな懸念の1つです。つまり、最大値にした場合(または未定義のままにした場合)、数語しか含まれていないと、ストレージやメモリが無駄になりますか?あるいは、最新のDBとして、MySQLは空のデータを予約スペースとして保存しませんか?私の調査では、VARCHAR
クエリとTEXT
クエリの間のパフォーマンスの違いは、最近のシステムでは非常に小さいことが示されています。また、コンテンツ内で多くのテキスト検索を行う必要はありません。私は何も計画していませんが、そうすることができれば、長期的にはメリットがあります。
暫定的な結論:最高で標準に準拠している(優先度は低い)と思います。VARCHAR
タイプを制限なしで作成する必要があります。次に、そこにマークダウン、HTML、またはテキスタイルデータを挿入します。制限を指定しないと、サーバーのデータ容量が最大になると思います。
WouldVARCHAR
採用するのに最適な標準ですか?または、Rails研究で完全に脱却しましたか?
そのフィールドに保存するデータのサイズによって異なります。 VARCHAR
には制限があり、その制限はバイト単位であるため、格納できる文字数は、使用する文字セットによって異なります。たとえば、UTF 8
、保存できるデータ量が少なくなります。
要約すると、「最良の」解決策はありませんが、データがVARCHAR
に収まる場合は、それを使用します:)。そうでない場合は、TEXT
またはBLOB
を使用する必要があります。または、保存する前にデータを圧縮する必要があります( (compress を確認してください)。