MySQL:varchar型の専有する大きさについて
データベースのテーブル設計でvarchar型を使用しますが、その設定値に関する記事です。varchar型に大きな最大値を設定したときに専有する容量はどうなるのでしょうか?
色々考えた結果、容量節約のために余裕なくギチギチに設定したり、余裕を考えて大きく設計したりと悩みどころです。
ギチギチに設計しすると、後々拡張の必要性が出たりもします。余裕を見(過ぎ)て設計するとそんなに入力文字数はいらなかった・・・こんな場合もあります。
さて、varchara型はどのように振る舞うのでしょうか?
varchar(1000)
まず、varcharの数字の意味ですが、1,000は1,000文字を示します。これは文字コード毎の1文字を表すデータの大きさは関係ありません。Unicode(4Byte)でもSJIS(2Byte)でも等しく1,000文字入ります。
では次に「はい」の二文字だけ格納した時に、データベースの領域はどのように確保されるのでしょうか?
この場合、2文字分の領域のみ確保されます。必ず1,000文字分の領域を確保されるわけではないので、余裕を持った設定にしても、データベース容量を不必要に圧迫するわけではないようです。
Unicodeなら、4Byte×2文字=8Byte
SJISなら、2Byte×2文字=4Byte
varcharは名前からも”可変長の文字列”ということで、臨機応変に対応してくれる優れたデータ型です。
CHAR型とVARCHAR型:DBOnline
https://www.dbonline.jp/mysql/type/index3.html
ディスカッション
コメント一覧
まだ、コメントがありません