Ada berbagai tempat di mana VARCHAR
dan TEXT
melakukan atau tidak berbeda. Beberapa hal yang saya katakan:
- Jika panjang maksimum lebih dari 512 karakter , gunakan
TEXT
. - Jangan pernah menggunakan
TINYTEXT
-- hanya memiliki negatif relatif terhadapVARCHAR(255)
. - Jangan gunakan
VARCHAR(255)
; pilih maks yang masuk akal daripada 255. (Ini adalah pengoptimalan kecil yang berkaitan dengan tabel temp dalam kueri kompleks.) - Gunakan
CHAR
hanya untuk hal-hal yang benar-benar panjangnya tetap. Dalam hampir semua kasus seperti itu, tempelkanCHARACTER SET ascii
(atau latin1). (Jika tidak, ini akan memakan lebih banyak ruang daripada yang Anda harapkan. - Gunakan
CHARACTER SET ut8mb4
. (Pengecualian menjadi semakin langka.)
(Maaf, saya ngelantur. Kembali ke topik...)
Saya mengindeks, dalam tata letak baris InnoDB (ada 4 ROW_FORMATs
yang berbeda ), dll, VARCHAR(513)
pada dasarnya tidak dapat dibedakan dari TEXT
.
Salah satu dari sedikit argumen untuk VARCHAR
adalah bahwa itu membatasi toko untuk panjang yang diberikan. Tapi seberapa sering itu penting?