VARCHAR
disimpan sejajar dengan tabel. VARCHAR
lebih cepat jika ukurannya masuk akal, pengorbanannya akan lebih cepat tergantung pada data dan perangkat keras Anda, Anda ingin membandingkan skenario dunia nyata dengan data Anda.
Jumlah maksimum byte efektif yang dapat disimpan dalam VARCHAR
atau VARBINARY
kolom tunduk pada ukuran baris maksimum 65,535 bytes
, yang dibagikan di antara semua kolom.
Misalnya, VARCHAR(255)
kolom dapat menampung string dengan panjang maksimum 255 karakter. Dengan asumsi bahwa kolom menggunakan set karakter latin1 (satu byte per karakter), penyimpanan aktual yang diperlukan adalah panjang string (L), ditambah satu byte untuk merekam panjang string. Untuk string 'abcd'
, L
adalah 4
dan kebutuhan penyimpanan adalah lima byte. Jika kolom yang sama malah dideklarasikan menggunakan ucs2
set karakter byte ganda, persyaratan penyimpanan adalah 10 byte:Panjang 'abcd' adalah delapan byte dan kolom memerlukan dua byte untuk menyimpan panjang karena panjang maksimum lebih besar dari 255 (hingga 510 bytes
).
Untuk data yang lebih besar, pertimbangkan untuk menggunakan TEXT
atau BLOB
. TEXT
dan BLOB
kolom diimplementasikan secara berbeda di NDB
mesin penyimpanan, di mana setiap baris dalam TEXT
kolom terdiri dari dua bagian yang terpisah. Salah satunya dengan ukuran tetap (256 bytes)
, dan sebenarnya disimpan di tabel asli. Yang lain terdiri dari data apa pun yang melebihi 256 bytes
, yang disimpan dalam tabel tersembunyi. Baris dalam tabel kedua ini selalu 2,000 bytes
panjang. Ini berarti bahwa ukuran TEXT
kolomnya adalah 256
jika size <= 256
(di mana ukuran mewakili ukuran baris); jika tidak, ukurannya adalah 256 + size + (2000 – (size – 256) % 2000)
.
http://dev.mysql.com/doc/refman /5.6/en/storage-requirements.html
Tergantung pada relasi database Anda, jika Anda jarang menggunakan bidang itu dalam kueri. Misalnya untuk info tambahan. Buat tabel terpisah adalah pilihan yang baik (normalisasi).
CATATAN : VARCHAR
berbeda dengan CHAR
. Jika Anda membuat VARCHAR(250)
dan masukkan hanya 20
karakter di atasnya maka dibutuhkan 5 bytes
+ L
beda dengan CHAR(250)
, dibutuhkan 250 bytes
+ L
untuk kondisi yang sama.