2016-08-17 4 views
1

私はMySQLデータベースを持っていて、データが入っていないVARCHAR(32)を持っているかどうかを知りたいですか、それに何かのスペースが必要ですか?kbデータが入っていないVARCHAR(32)を持っている場合は、スペースが必要ですか?

何かをチェックするために32文字のハッシュを保存していますが、しばらくしてもう使用しませんので、DBスペースの一部を取るとこのフィールドはnullになる可能性がありますまたは空です。

もしそうなら、スペースを節約するためにこのフィールドをnullまたは空にする必要がありますか?

+0

答えに関係なく、私はあなたがこのように重要なスペースを獲得するのかどうかは疑問です。 – HoneyBadger

+0

ご注意ください。 MySQLのリリースでは、行を削除した場合でもスペースは割り当てられませんでした。それを解放する唯一の方法は、テーブルを保存し、それを切り捨てて、もう一度入力することです –

+0

[マニュアルに記載されている](http://dev.mysql.com/doc/refman/5.7/en/char.html)あなたがそれを読むのに気を使うことができれば、それはすべて非常にうまく説明されます。 – RiggsFolly

答えて

2

NULLフラグは、NULLフラグのスペースを占有します。さらに、データ型の固定コンポーネントも格納されます。 VARCHAR()の場合は、1または2バイトの長さコンポーネントです。

VARCHAR()の格納要件については、documentationで説明しています。 VARCHAR(32)の場合、長さは1バイトとして格納されます。

Arrgh。 MySQLでは、これはストレージエンジンに依存することを忘れていました。上記はMyISAMに当てはまります。 InnoDBとは異なります。ここにはgoodの回答があります。

関連する問題