質問に答えるために、ディスク上でMySqlは1 +データを格納するためにフィールドで使用されるサイズを使用します(したがって、列がvarchar(45)と宣言され、フィールドが "FooBar"の場合、ディスク上で7バイトを使用します。もちろん、マルチバイト文字セットを使用している場合を除き、14バイトを使用します)。したがって、どのように列を宣言しても、ストレージ側では違いはありません(大規模なテーブルのディスク最適化について心配していると述べました)。ただし、MySqlが一時テーブル(SORT、ORDERなど)を作成するときにVARCHARがCHARに変換され、1つのページに収めることができるレコードが多いほど、メモリが少なくなり、テーブルスキャンが高速になるため、クエリに違いが生じます。