MySQL のドキュメントではこの問題が少し不明確であるため、これら 2 つのデータ型によって実際にどのくらいのストレージ スペースが占有されるのか疑問に思っています。
CHAR(M) M × w バイト、0 <= M <= 255。ここで、w は文字セットの最大長の文字に必要なバイト数です。
VARCHAR(M)、VARBINARY(M) 列の値が 0 ~ 255 バイトを必要とする場合は L + 1 バイト、値が 255 バイトを超える可能性がある場合は L + 2 バイト
これは、utf8 でエンコードされたデータベースを考えると、CHAR は常に 1 文字あたり 32 ビットを使用するのに対し、VARCHAR は格納されている文字の実際のバイト長に応じて 8 ~ 32 ビットを使用することを暗示しているようです。あれは正しいですか?または、VARCHAR は 8 ビットの文字幅を意味し、マルチオクテットの UTF8 文字を格納すると、実際には VARCHAR から複数の「文字」が消費されますか? それとも、VARCHAR も常に 1 文字あたり 32 ビットを格納しますか? 非常に多くの可能性。
以前はそれほど心配する必要はありませんでしたが、メモリ内の一時テーブルのサイズ制限に達し始めており、MySQL の使用可能なプールを (2 回目) 増やす必要は必ずしもありません。