varchar (255) vs tinytext / tinyblob dan varchar (65535) vs blob / teks

92

Menurut definisi:

VARCHAR: Rentang Panjangnya adalah 1 hingga 255 karakter. Nilai VARCHAR diurutkan dan dibandingkan dengan cara tidak membedakan huruf besar / kecil kecuali kata kunci BINARY diberikan. x + 1 byte
TINYBLOB, TINYTEXT: Kolom BLOB atau TEXT dengan panjang maksimal 255 (2 ^ 8 - 1) karakter x + 1 byte

Jadi berdasarkan ini, saya membuat tabel berikut:

CREATE TABLE `user` (
  `id` int(10) unsigned NOT NULL AUTO_INCREMENT,
  `name` varchar(255),
  `lastname` tinytext,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Atau lebih baik membuat varchar atau tinytext dan mengapa ?

Apakah sama untuk:

VARCHAR: Rentang Panjang> 255 karakter. Nilai VARCHAR diurutkan dan dibandingkan dengan cara tidak membedakan huruf besar / kecil kecuali kata kunci BINARY diberikan. x + 2 byte
BLOB, TEXT A BLOB atau TEXT kolom dengan panjang maksimum 65535 (2 ^ 16 - 1) karakter x + 2 byte

Tech4Wilco
sumber
VARCHAR membutuhkan lebih sedikit overhead memori, tetapi biasanya akan terbaca penuh di memori, jadi pada akhirnya VARCHAR mungkin masih menggunakan lebih banyak memori. Keduanya berbeda. Anda menggunakan BLOB untuk menyimpan data biner seperti gambar, audio, dan data multimedia lainnya. dan VARCHAR untuk menyimpan teks dengan ukuran berapa pun hingga batasnya.
Book Of Zeus

Jawaban:

10

Dalam hal varcharini lebih baik.

Perhatikan bahwa varcharbisa dari 1 hingga 65535 karakter.

Nilai dalam kolom VARCHAR adalah string dengan panjang variabel. Panjangnya dapat ditentukan sebagai nilai dari 0 hingga 255 sebelum MySQL 5.0.3, dan 0 hingga 65.535 di 5.0.3 dan versi yang lebih baru. Panjang maksimum efektif VARCHAR di MySQL 5.0.3 dan yang lebih baru bergantung pada ukuran baris maksimum (65.535 byte, yang dibagi di antara semua kolom) dan rangkaian karakter yang digunakan. Lihat Bagian E.7.4, “Batas Jumlah Kolom Tabel dan Ukuran Baris”.

Blob disimpan di bagian file yang terpisah.
Mereka membutuhkan fileread ekstra untuk disertakan dalam data.
Untuk alasan ini varchar diambil lebih cepat.

Jika Anda memiliki blob besar yang jarang Anda akses, maka blob lebih masuk akal.
Menyimpan data blob dalam file terpisah (bagian dari) memungkinkan file data inti Anda menjadi lebih kecil dan dengan demikian dapat diambil lebih cepat.

Johan
sumber
Apakah ini lebih baik atau tidak tergantung pada pola akses data Anda.
Michael Mior
1
File terpisah manakah itu?
glglgl
1
Blob tidak disimpan dalam file terpisah. Tetapi mereka disimpan di lokasi fisik yang terpisah dari kolom lainnya.
Michael Mior
1
Perhatikan bahwa ini tidak hanya bergantung pada frekuensi akses, tetapi juga operasi apa yang dilakukan pada data. Misalnya, kueri apa pun yang memerlukan pemindaian tabel (yang umumnya buruk), tetapi tidak kolom teks akan menjadi lebih buruk dengan volume data yang dipindai lebih besar.
Michael Mior
1
Saya juga menduga bahwa filesorts yang tidak menggunakan kolom ini mungkin lebih efisien jika data disimpan di luar halaman meskipun saya tidak yakin pengoptimal kueri cukup pintar untuk tidak menarik data ini.
Michael Mior