Sebuah VARCHAR(255)
dapat menyimpan hingga 255 karakter, terlepas dari jumlah byte per karakter yang diperlukan oleh pengkodean kumpulan karakter.
Persyaratan penyimpanan adalah panjang data aktual yang disimpan (bukan maksimum), ditambah 1 atau 2 byte untuk menyimpan panjang data -- 1 byte digunakan kecuali panjang maksimum yang mungkin dalam byte> 255... jadi VARCHAR(255) COLLATE utf8mb4
menggunakan 2 byte untuk menyimpan panjangnya, sedangkan VARCHAR(255) COLLATE ascii_general_ci
menggunakan 1 byte untuk menyimpan panjangnya. Salah satu kolom dapat menyimpan tidak lebih dari 255 karakter.
Nyatakan ukuran kolom yang sesuai untuk data yang disimpan. Menggunakan 255 adalah hal yang umum, tetapi biasanya merupakan tanda merah dari desain yang ceroboh, karena jarang nilai khusus ini secara bermakna mewakili panjang maksimum kolom yang sesuai.
Sebaliknya, sebuah CHAR(255) COLLATE utf8mb4
selalu mengkonsumsi 255 × 4 (maksimum mungkin) byte per kolom per baris, dan 0 byte untuk menyimpan panjangnya, karena panjang yang disimpan tidak bervariasi. Kolom-kolom ini jarang sesuai, kecuali jika panjang kolom selalu diketahui dan set karakter adalah byte tunggal, seperti UUID, yang akan menjadi CHAR(36) COLLATE ascii_general_ci
.
https:// /dev.mysql.com/doc/refman/5.7/en/storage-requirements.html#data-types-storage-reqs-strings