CHAR と VARCHAR
文字列型の主要なものとして、CHAR
と VARCHAR
が挙げられる。
char(128)
varchar(64)
後ろのカッコにバイト数を指定できる。
CHAR
データは固定長。
char(100)
上記のように指定した場合、与えた文字列が100バイトに満たない場合は空白文字が末尾に追加され強制的に100バイトになる。
0 ~ 255 まで指定できる。
末尾に追加された空白文字は、取り出し時に自動的に取り除かれる。もともと末尾に空白文字を含むデータでも、同じように空白は取り除かれる。
VARCHAR
データは可変長。
char(100)
100バイトまで受け付けるのはもちろんのこと、1バイトの文字列を与えた場合はそのまま1バイト。
0 ~ 65,535 まで指定できる。
どちらを使うか?
基本的には VARCHAR
で良い。
CHAR
の方が早いという意見もあるが、大した差はないとする意見もある。
ちなみにMySQL公式ドキュメントには、特に性能差についての言及は見当たらなかった。