Dalam banyak kursus, buku, dan pekerjaan, saya telah melihat bidang teks yang didefinisikan sebagai VARCHAR (255) sebagai jenis default untuk teks "pendek". Apakah ada alasan bagus mengapa panjang 255 dipilih begitu sering, selain menjadi angka bulat yang bagus ? Apakah ini merupakan ketidaksepakatan dari masa lalu ketika ada alasan yang bagus (apakah itu berlaku hari ini atau tidak)?
Saya menyadari, tentu saja, bahwa batas yang lebih ketat akan lebih ideal, jika Anda entah bagaimana mengetahui panjang maksimum string. Tetapi jika Anda menggunakan VARCHAR (255) yang mungkin menunjukkan bahwa Anda tidak tahu panjang maks, hanya bahwa itu adalah string "pendek".
Catatan: Saya menemukan pertanyaan ini ( varchar (255) v tinyblob v tinytext ), yang mengatakan bahwa VARCHAR ( n ) membutuhkan n +1 byte penyimpanan untuk n <= 255, n +2 byte penyimpanan untuk n > 255. Apakah ini satu-satunya alasan? Tampaknya agak arbitrer, karena Anda hanya akan menghemat dua byte dibandingkan dengan VARCHAR (256), dan Anda bisa dengan mudah menyimpan dua byte lainnya dengan mendeklarasikannya VARCHAR (253).
255 digunakan karena jumlah karakter terbesar yang dapat dihitung dengan angka 8-bit. Ini memaksimalkan penggunaan hitungan 8-bit, tanpa perlu banyak byte lain untuk menghitung karakter di atas 255.
Ketika digunakan dengan cara ini, VarChar hanya menggunakan jumlah byte + 1 untuk menyimpan teks Anda, jadi sebaiknya Anda mengaturnya menjadi 255, kecuali jika Anda menginginkan batas keras (seperti 50) pada jumlah karakter di lapangan.
sumber
utf8
,varchar(85)
batas atas yang melintasi tips panjang byte dari satu hingga dua byte. Jika ituutf8mb4
, ituvarchar(63)
. Ini penting karena merupakan maksimum yang panjang VARCHAR dapat diperpanjang melalui penggunaan ALTER TABLE online . Akibatnya, saya memperoleh angka-angka itu dengan membuat tabel denganvarchar(2) charset utf8
kolom dan melihat sejauh mana saya bisa memperpanjangnyaALGORITHM=INPLACE
.Mungkin karena baik SQL Server dan Sybase (untuk nama dua saya kenal) digunakan untuk memiliki maksimum 255 karakter dalam jumlah karakter dalam
VARCHAR
kolom. Untuk SQL Server, ini berubah dalam versi 7 pada tahun 1996/1997 atau lebih ... tetapi kebiasaan lama terkadang sulit.sumber
Saya akan menjawab pertanyaan literal: tidak , tidak ada alasan bagus yang Anda lihat VARCHAR (255) sering digunakan (memang ada alasan , seperti yang dibahas dalam jawaban lain, hanya saja bukan yang bagus). Anda tidak akan menemukan banyak contoh proyek yang gagal serempak karena arsitek memilih VARCHAR (300) daripada VARCHAR (255). Ini akan menjadi masalah hampir tidak signifikan bahkan jika Anda berbicara tentang CHAR, bukan VARCHAR.
sumber
Ketika Anda mengatakan
2^8
Anda mendapatkannya256
, tetapi angka dalam istilah komputer dimulai dari angka tersebut0
. Jadi, setelah Anda mendapatkannya255
, Anda bisa menyelidikinya di internet mask untuk IP atau IP itu sendiri.255
adalah nilai maksimum integer 8 bit:11111111 = 255
Apakah itu membantu?
sumber
Tidak, Anda tidak menyimpan dua byte dengan mendeklarasikan 253. Implementasi varchar kemungkinan besar adalah penghitung panjang dan panjang variabel, array yang tidak ditentukan. Ini berarti bahwa jika Anda menyimpan "halo" dalam varchar (255) Anda akan menempati 6 byte: satu byte untuk panjang (angka 5) dan 5 byte untuk lima huruf.
sumber
VARCHAR
cara itu mengalahkan seluruh titik penggunaanVARCHAR
alih-alihCHAR
.Nomor 1 byte yang tidak ditandatangani dapat berisi kisaran [0-255] inklusif. Jadi, ketika Anda melihat 255, itu sebagian besar karena programmer berpikir dalam basis
10
(dapatkan lelucon?) :)Sebenarnya, untuk sementara, 255 adalah ukuran terbesar yang bisa Anda berikan VARCHAR di MySQL, dan ada keuntungan menggunakan VARCHAR dibandingkan TEXT dengan pengindeksan dan masalah lainnya.
sumber
Dalam banyak aplikasi, seperti MsOffice (hingga versi 2000 atau 2002), jumlah maksimum karakter per sel adalah 255. Memindahkan data dari program yang mampu menangani lebih dari 255 karakter per bidang ke / dari aplikasi tersebut adalah mimpi buruk. Saat ini, batasnya kurang dan kurang menghalangi.
sumber
0000 0000 -> ini adalah angka biner 8-bit. Digit mewakili sedikit.
Anda menghitung seperti itu:
0000 0000 → (0)
0000 0001 → (1)
0000 0010 → (2)
0000 0011 → (3)
Setiap bit bisa menjadi salah satu dari dua nilai: hidup atau mati. Total angka tertinggi dapat diwakili oleh perkalian:
Atau
Kami kurangi satu karena angka pertama adalah 0.
255 dapat menampung cukup banyak (tidak ada permainan kata-kata) nilai.
Saat kami menggunakan lebih banyak bit, nilai maks naik secara eksponensial. Oleh karena itu untuk banyak tujuan, menambahkan lebih banyak bit terlalu banyak.
sumber
Alasan lain mungkin bahwa di pustaka akses data yang sangat lama pada Windows seperti RDO dan ADO (versi COM bukan ADO.NET) Anda harus memanggil metode khusus, GetChunk, untuk mendapatkan data dari kolom dengan lebih dari 255 karakter. Jika Anda membatasi kolom varchar ke 255, kode tambahan ini tidak diperlukan.
sumber