私の副次的な質問は、tinyblobとtinytextの間に本当に違いがありますか?
私の本当の質問を購入するのは、もしあれば、tinyblobまたはtinytextよりもvarchar(255)を選択する理由は何ですか?
私の副次的な質問は、tinyblobとtinytextの間に本当に違いがありますか?
私の本当の質問を購入するのは、もしあれば、tinyblobまたはtinytextよりもvarchar(255)を選択する理由は何ですか?
主にストレージ要件とメモリ処理/速度:
次の表で
M
は、宣言された列の長さを非バイナリ文字列型の文字数とバイナリ文字列型のバイト数で表しています。L
指定された文字列値の実際の長さをバイト単位で表します。VARCHAR(
M
)、VARBINARY(M
):
L
列の値に 0 ~ 255 バイト
L
が必要な場合は + 1 バイト、値が 255 バイトを超える可能性がある場合は + 2 バイトTINYBLOB、TINYTEXT:
L
+ 1 バイト、ここでL
< 2 8
さらに、次の投稿を参照してください。
使用中のテーブルごとに、MySQL は 4 行分のメモリを割り当てます。これらの行ごとに、CHAR(X)/VARCHAR(X) 列が X 文字を占めます。
一方、TEXT/BLOB は、8 バイトのポインター + 1 ~ 4 バイトの長さ (BLOB/TEXT の種類によって異なります) で表されます。BLOB/TEXT は使用時に動的に割り当てられます。これによりメモリの使用量が少なくなりますが、場合によっては、長期的にはメモリが断片化する可能性があります。
編集:余談ですが、ブロブはバイナリデータを保存し、テキストはASCIIを保存します。これがTINYBLOBとTINYTEXTの唯一の違いです。
VARCHAR(255) は、tinyblob や tinytext よりも SQL 標準です。したがって、スクリプトとアプリケーションは、データベース ベンダー間で移植性が高くなります。
CHARACTER SET を TINYTEXT に適用することはできませんが、VARCHAR(255) には適用できます。