Di MySQL Anda harus menetapkan batas jika Anda menggunakan varchar. Apakah batas ini hanya ada untuk membuatnya lebih kecil kemungkinan untuk devs untuk secara tidak sengaja menyimpan terlalu banyak data atau apakah ada alasan lain (mis. Lebih lanjut ...

0
dtpnftscdsatp 5 April 2021, 22:32

2 jawaban

Jawaban Terbaik

Kolom VARCHAR diwakili dalam basis data dengan bidang panjang ukuran tetap dan konten panjang variabel.

Basis data perlu tahu berapa banyak byte untuk digunakan untuk bidang panjang tersembunyi. Jika panjangnya kurang dari 256 ia menggunakan 1 byte, jika itu antara 256 dan 65535 ia menggunakan 2 byte.

Mungkin dimungkinkan untuk menggunakan bidang panjang yang secara otomatis mengembang sesuai kebutuhan. Tetapi menjaganya tetap-panjang membuat segalanya lebih efisien.

1
Barmar 5 April 2021, 19:54

Sepertinya ini berasal dari kemampuan untuk "melompat" dari satu catatan ke catatan lain, dalam memori. Ini mungkin menjelaskan mengapa jumlah total data rekaman tidak boleh lebih dari 65535 byte, jadi "kata". Tetapi untuk mengetahui apakah catatan Anda tidak lebih besar dari 65535 byte, MySQL harus tahu ukurannya.

Perhatikan juga, kita berbicara di sini tentang "ukuran byte" dan bukan "jumlah char". Berarti MySQL akan mengambil nilai yang Anda tetapkan sebagai varchar (jumlah karakter) tetapi kemudian gandakan ini dengan ukuran karakter, tergantung pada collation, untuk melihat apakah seluruh catatan dapat masuk ke dalam batas 65536 byte.

Cukup buat tabel dan tambahkan bidang tipe varchar (30000) dengan collation ascibin. Ini akan baik-baik saja. Sekarang, edit tabel ini, cukup menetapkan collation ke utf8 .... dan Anda akan melihat MyQL tidak akan menerima.

0
Peter 5 April 2021, 20:11