web-dev-qa-db-ja.com

リッチテキスト:MySQLのVARCHAR、TEXTまたはBLOB

質問:私のWebアプリケーション(php/MySQL)では、リッチテキストを保存します。これは、数語から数ページの長さのエッセイまで何でもかまいません。 VARCHARTEXT、またはBLOBを使用して、TinyMCEなどのリッチテキストエディターからのマークダウンまたはHTMLを保存することで、問題を解決できると確信しています。どちらを使用すればよいですか?

これまでの私の調査結果:今週の私の検索では、一般的に最善の決定的な情報源となるものは何も見つかりませんでした。 VARCHARは標準であり、TEXTは標準ではないと思います。 BLOBはバイナリデータ用なので、やりすぎです。 TEXTは、一部のDBMSでは廃止される可能性があります。 VARCHARがどのようにデータベースに保存されるかについての私の無知を中心に展開している大きな懸念の1つです。つまり、最大値にした場合(または未定義のままにした場合)、数語しか含まれていないと、ストレージやメモリが無駄になりますか?あるいは、最新のDBとして、MySQLは空のデータを予約スペースとして保存しませんか?私の調査では、VARCHARクエリとTEXTクエリの間のパフォーマンスの違いは、最近のシステムでは非常に小さいことが示されています。また、コンテンツ内で多くのテキスト検索を行う必要はありません。私は何も計画していませんが、そうすることができれば、長期的にはメリットがあります。

暫定的な結論:最高で標準に準拠している(優先度は低い)と思います。VARCHARタイプを制限なしで作成する必要があります。次に、そこにマークダウン、HTML、またはテキスタイルデータを挿入します。制限を指定しないと、サーバーのデータ容量が最大になると思います。

WouldVARCHAR採用するのに最適な標準ですか?または、Rails研究で完全に脱却しましたか?

3
ShawnPConroy

そのフィールドに保存するデータのサイズによって異なります。 VARCHARには制限があり、その制限はバイト単位であるため、格納できる文字数は、使用する文字セットによって異なります。たとえば、UTF 8、保存できるデータ量が少なくなります。

要約すると、「最良の」解決策はありませんが、データがVARCHARに収まる場合は、それを使用します:)。そうでない場合は、TEXTまたはBLOBを使用する必要があります。または、保存する前にデータを圧縮する必要があります( (compress を確認してください)。

1
Jehad Keriaki