Mysql
 sql >> Database >  >> RDS >> Mysql

In che modo MySQL interpreta la dimensione del campo VARCHAR?

Un VARCHAR(255) può memorizzare fino a 255 caratteri, indipendentemente dal numero di byte per carattere richiesti dalla codifica del set di caratteri.

Il requisito di archiviazione è la lunghezza dei dati effettivi memorizzati (non il massimo), più 1 o 2 byte per memorizzare la lunghezza dei dati -- 1 byte viene utilizzato a meno che la lunghezza massima possibile in byte> 255... quindi a VARCHAR(255) COLLATE utf8mb4 usa 2 byte per memorizzare la lunghezza, mentre un VARCHAR(255) COLLATE ascii_general_ci utilizza 1 byte per memorizzare la lunghezza. Ciascuna colonna può memorizzare non più di 255 caratteri.

Dichiarare la dimensione della colonna appropriata per i dati archiviati. L'uso di 255 è comune, ma di solito è una bandiera rossa di design sciatto, poiché è raro che questo particolare valore rappresenti in modo significativo la lunghezza massima appropriata di una colonna.

Al contrario, un CHAR(255) COLLATE utf8mb4 consuma sempre 255 × 4 (il massimo possibile) byte per colonna per riga e 0 byte per memorizzare la lunghezza, poiché la lunghezza memorizzata non varia. Queste colonne sono raramente appropriate, tranne quando la colonna ha sempre una lunghezza nota e il set di caratteri è a byte singolo, come un UUID, che sarebbe CHAR(36) COLLATE ascii_general_ci .

https:/ /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings