質問: VARCHAR型で、格納最大字数を300文字~500文字ぐらいの範囲でどうしようか検討しているのですが、 格納最大字数と必要なバイト数は、完全な相関関係ではないのですが? バイトの分かれ目 VARCHAR(1)とVARCHAR(255)は、格納可能な文字数は異なるが、文字数を保持する領域は同じ1バイトですか? →だったら、VARCHAR(255)に設定した方が良いと解釈してよいですか? VARCHAR(256)とVARCHAR(65,535)は、格納可能な文字数は異なるが、文字数を保持する領域は同じ2バイトですか? →だったら、VARCHAR(65,535)に設定した方が良いと解釈してよいですか? ※後から設定変更するのは手間なので、同じバイト数なら最大文字数が多い設定にあらかじめしておいた方がよいのでは、と思いました。 MySQL5.7 InnoDB utf8mb4_general_ci
回答: 何をもって「だったら、VARCHAR(255)に設定した方が良いと解釈」するのかが曖昧ですが (余裕を持たせる?)、マニュアルには以下の様な記載があるので、こちらを一つの判断材料にしてみてはいかがでしょうか。 11.4.1 CHAR および VARCHAR 型 > > VARCHAR 値は、1 バイトまたは 2 バイト長のプリフィクスの付いたデータとして格納されます。長さプリフィクスは、値に含まれるバイト数を示します。255 バイト以下の値を格納するカラムでは 1 バイト長のプリフィクスを使用し、255 バイトよりも大きい値を格納するカラムでは 2 バイト長のプリフィクスを使用します。 > > >