Jika Anda maksudkan, "Apakah ada penalti untuk mendeklarasikan ukuran bidang yang lebih besar daripada nilai apa pun yang sebenarnya disimpan di dalamnya?", Maka selama dinyatakan sebagai varchar, jawabannya adalah tidak. Setiap mesin SQL DB yang saya tahu menyimpan hanya jumlah karakter yang benar-benar diberikan dalam data (ditambah nilai panjang). Jadi jika Anda mendefinisikan bidang sebagai varchar (100) tetapi hanya menyimpan 10 karakter di dalamnya, maka hanya akan memakan 10 karakter pada disk (ditambah 2 byte atau lebih untuk panjangnya). Ketika ragu, saya secara rutin membuat bidang varchar saya sangat besar.
Jika maksud Anda, "Apakah ada penalti untuk menyimpan bidang karakter yang panjang," jawabannya adalah ya. Ruang disk saat ini murah, tetapi tidak gratis, jadi Anda tidak ingin menyia-nyiakannya tanpa alasan. Mungkin lebih penting, butuh waktu untuk membaca data dari disk, jadi semakin lama bidang data Anda, semakin lambat programnya. Jika bidang diindeks, ini benar-benar dapat memperlambat pengambilan Anda, karena setiap pembacaan harus membandingkan nilai kunci terhadap bidang panjang yang besar ini.
Ingatlah bahwa jika Anda memberikan bidang entri data besar kepada pengguna, mereka akan menggunakannya, cepat atau lambat.
Semua yang dikatakan, saya akan melakukan kesalahan pada sisi terlalu besar daripada terlalu kecil. Ruang disk cukup murah sehingga Anda tidak ingin memaksa pengguna untuk membuat singkatan dengan cepat karena mereka tidak dapat memasukkan data nyata ke dalam bidang yang tersedia. Sistem yang saya kerjakan hari ini memiliki bidang deskripsi produk yang terlalu kecil untuk banyak nama asli produk kami, jadi pengguna harus menyingkat. Dan tentu saja setiap pengguna menyingkat secara berbeda, jadi kami memiliki dua puluh cara berbeda untuk mengatakan hal yang sama.