utfは実際にはutfmb3であり、1文字あたり最大3バイトを使用できますが、utfmb4は1文字あたり4バイトを使用できます。 VARCHAR列の場合、MySQLは必要な数のバイトのみを格納するため(ROW_FORMAT =FIXEDを使用してMyISAMテーブルを作成した場合を除く)、これは通常大きな違いはありません。
ただし、クエリの実行中に、MySQLは可変長行をサポートしないMEMORYストレージエンジンに一時テーブルを作成する場合があります。これらの一時テーブルには最大サイズがあり、そのサイズを超えると、一時テーブルはMyISAM / InnoDBのテーブルに変換されます(MySQLのバージョンによって異なります)。ステータス変数Created_tmp_disk_tables
これが発生するたびに増分されます。その場合は、max_heap_table_size
の値を増やすのに役立つかどうかを確認してください および tmp_table_size
。
または、可変長行をサポートする新しいストレージエンジンが内部一時テーブルに使用されるMySQL8.0にアップグレードします。