【MySQL】CHAR型とVARCHAR型の違い

公開日:
更新日:
カテゴリー: MySQL

MySQLのフィールドに指定するデータ型にCHAR型とVARCHAR型(いずれも文字列型)がありますが、この違いについてまとめています。

CHARとVARCHARの違い

CHARとVARCHARの違いは、「挿入に必要なサイズ」です。

型名 値の範囲(バイト) 挿入に必要なサイズ
CHAR(M) 255 Mバイト
VARCHAR(M) 255 X+1バイト

両方の型とも文字列のデータを挿入するときに指定しますが、CHAR(10)とVARCHAR(10)では実際にデータを挿入した時に違いが生じます。

例えば、「A」という文字は半角英数字なので1バイトの容量を必要としますが、CHAR(10)型のフィールドに「A」を挿入した場合、消費容量は10バイトとなります。

一方、VARCHAR(10)型のフィールドに「A」を挿入した場合、消費容量は1バイト(正確には2バイト)です。

VARCHARのみ使用すればいいのでは?

だとしたら、CHAR型ではなくVARCHAR型だけ使用すればいいことになりますが、CHAR型は格納するデータのバイト数に関わらずすべてのレコードで同じ容量のデータを格納するため、MySQLサーバのスピードが向上します。

しかし、CHAR(100)のように大きめのデータを格納しようとすると逆にメモリを消費することもあります。

そのため基本的にはCHAR型を遣う明確な理由がない場合は、VARCHARを使えばいいのではないかと思います。

なお、MySQLでは、ひとつのテーブルにCHAR型とVARCHAR型を混在して使うことはできません。

※MySQL4では使えないと記憶してたのですが、現在はCHAR型とVARCHAR型を混在して使うことは可能なようです(未確認)

 

あわせて読んでほしい!

 

コメント

まだコメントはありません。

コメントフォーム
お名前
コメント