Panjang kolom varchar ditetapkan dengan panjang yang Anda nyatakan saat Anda membuat tabel. Panjangnya dapat berupa nilai dari 0 hingga 255 (sebelum MySQL 5.0.3) dan dari 0 hingga 65.535 (di MySQL 5.0.3 dan yang lebih baru).
Penyimpanan varchar adalah byte data dengan penambahan satu atau dua byte untuk menyatakan panjang string. Jika panjang maksimum adalah 255 atau kurang, maka hanya panjang 1 byte yang akan ditambahkan.
Jika Anda menggunakan tabel ubah dan mengubah panjang maksimum maka tidak ada ukuran penyimpanan data yang akan terpengaruh jika panjang maksimum yang ditentukan di bawah 255. Jika Anda meningkatkan panjang maksimum di atas 255 maka terserah mesin penyimpanan jika memaksa dua byte atau bukan untuk nilai di bawah 255, dalam hal ini akan bertambah 1 byte untuk setiap baris.
Jenis char berbeda dengan varchar karena char selalu menggunakan ruang yang diperlukan, jadi jika Anda memiliki char(10) dan varchar(10) tetapi hanya menyimpan "halo" di masing-masing, char akan menggunakan semua 10 byte, vharchar akan menampung 6 byte ( 5 untuk hello dan 1 untuk panjangnya), oleh karena itu mengubah ukuran kolom varchar tidak akan mengalokasikan lebih banyak ruang penyimpanan seperti jika itu adalah tipe char.
Pertanyaan sebenarnya sekarang adalah mengapa Anda ingin PHP memanipulasi ukuran varchar? Anda harus menentukan ukuran karena suatu alasan, jika Anda menginginkan bidang panjang variabel yang dapat menampung banyak teks (lebih dari 65.535 byte) dan juga dinamis sehingga hanya menggunakan ruang minimum yang diperlukan mungkin jenis TEXT mungkin lebih baik untuk situasi Anda ?