Um
VARCHAR(255)
pode armazenar até 255 caracteres, independentemente do número de bytes por caractere exigido pela codificação do conjunto de caracteres. O requisito de armazenamento é o comprimento dos dados reais armazenados (não o máximo), mais 1 ou 2 bytes para armazenar o comprimento dos dados -- 1 byte é usado a menos que o comprimento máximo possível em bytes> 255... código>VARCHAR(255) COLLATE utf8mb4 usa 2 bytes para armazenar o comprimento, enquanto um
VARCHAR(255) COLLATE ascii_general_ci
usa 1 byte para armazenar o comprimento. Qualquer coluna pode armazenar no máximo 255 caracteres. Declare o tamanho da coluna conforme apropriado para os dados armazenados. Usar 255 é comum, mas geralmente uma bandeira vermelha de design desleixado, pois é raro que esse valor específico represente significativamente o comprimento máximo apropriado de uma coluna.
Por outro lado, um
CHAR(255) COLLATE utf8mb4
sempre consome 255 × 4 (o máximo possível) bytes por coluna por linha e 0 bytes para armazenar o comprimento, pois o comprimento armazenado não varia. Essas colunas raramente são apropriadas, exceto quando a coluna tem sempre um comprimento conhecido e o conjunto de caracteres é de byte único, como um UUID, que seria CHAR(36) COLLATE ascii_general_ci
. https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings