Nếu bạn muốn nói, "Có hình phạt nào khi khai báo kích thước trường lớn hơn bất kỳ giá trị nào thực sự được lưu trữ trong đó không?", Thì miễn là nó được khai báo varchar, câu trả lời là không. Mỗi công cụ SQL DB mà tôi biết chỉ lưu trữ số lượng ký tự thực sự được cung cấp trong dữ liệu (cộng với giá trị độ dài). Vì vậy, nếu bạn xác định trường là varchar (100) nhưng chỉ lưu trữ 10 ký tự trong đó, thì nó sẽ chỉ chiếm 10 ký tự trên đĩa (cộng thêm 2 byte hoặc hơn cho chiều dài). Khi nghi ngờ, tôi thường xuyên làm cho các trường varchar của tôi lớn một cách lố bịch.
Nếu bạn muốn nói, "Có bị phạt khi lưu trữ các trường ký tự dài không", câu trả lời là có. Dung lượng đĩa ngày nay rẻ, nhưng nó không miễn phí, vì vậy bạn không muốn lãng phí nó mà không có lý do. Có lẽ quan trọng hơn, cần có thời gian để đọc dữ liệu ra khỏi đĩa, vì vậy các trường dữ liệu của bạn càng dài thì chương trình càng chậm. Nếu trường được lập chỉ mục, điều này thực sự có thể làm chậm quá trình truy xuất của bạn, vì mỗi lần đọc sẽ phải so sánh giá trị khóa với trường dài lớn này.
Hãy nhớ rằng nếu bạn cung cấp cho người dùng một trường nhập dữ liệu lớn, họ sẽ sử dụng nó, sớm hay muộn.
Tất cả những gì đã nói, tôi sai ở phía quá lớn thay vì quá nhỏ. Dung lượng ổ đĩa đủ rẻ để bạn không muốn buộc người dùng phát minh ra các chữ viết tắt một cách nhanh chóng vì chúng không thể vừa với dữ liệu thực vào trường có sẵn. Hệ thống tôi đang làm việc hôm nay có trường mô tả sản phẩm quá nhỏ so với nhiều tên thật của sản phẩm, vì vậy người dùng phải viết tắt. Và tất nhiên mỗi người dùng viết tắt khác nhau, vì vậy chúng tôi có hai mươi cách khác nhau để nói cùng một điều.