Đó là thói quen nhiều hơn bất cứ điều gì. Không có gì kỳ diệu về varchar (32) hoặc varchar (64), tương tự như không có gì phép thuật về mặc định các công cụ trực quan cố gắng để làm cho bạn sử dụng thay vào đó (ví dụ: varchar (50)). Rất nhiều giới hạn trên đã được ăn sâu vào đầu người từ 640k sẽ là đủ bộ nhớ cho bất cứ ai và chúng tôi thực sự cần phải lo lắng về từng byte đơn lẻ.
Trong nhiều trường hợp, nó rơi xuống một nền tảng chung. Trong một hệ thống trước đó, tôi làm việc trong các nhà quản lý sản phẩm không biết yêu cầu của họ là gì. Họ muốn lưu trữ một cái tên, nhưng họ không biết tên miền thực sự bao gồm cái gì - nhưng một trong số họ đã nói rằng họ đã nghe về họ> 50 ký tự, vì vậy anh biết nó phải hơn 32 và hơn 50. Chúng tôi đã trở lại với 64, ông đã đồng ý rằng là đủ, và đó là những gì vẫn còn đó ngày hôm nay AFAIK.
Mặc dù chúng tôi đã có lý do kỹ thuật cho e-mail (varchar (320)), tại thời điểm tiêu chuẩn được quy định là 320 ký tự vì 64 ký tự cho tên người dùng/localpart, 255 ký tự cho tên miền và 1 ký tự cho @. Hầu hết các quyết định khác đều dựa trên quyền ưu tiên (ví dụ: tất cả các tên tiếp theo theo mô hình nvarchar (64) như đã quyết định ở trên) hoặc logic (ví dụ: URL không cần phải là nvarchar (tối đa), nhưng tùy thuộc vào khả năng tiêu chuẩn và trình duyệt tại thời gian, họ đã tin rằng một trong hai varchar (2048) hoặc varchar (4096) Trong trường hợp đó không phải vì nó là một sức mạnh của 2, nhưng vì phần mềm hoặc tiêu chuẩn của người khác xây dựng công cụ của họ để sử dụng một sức mạnh của 2.
Nguồn
2012-02-23 03:42:21
Ouch. Tôi có mái tóc màu xám nhưng tôi không phải là cũ (38). :-) –
Hmm, mặc dù trong các bảng lớn nơi bạn cần thực hiện các cuộc gọi SELECT yêu cầu nhiều I/O, tiết kiệm một vài byte kích thước hàng * có thể * tạo sự khác biệt. (Nhưng bạn hoàn toàn đúng về chiều dài VARCHAR mặc dù :) – osman
@osman yes - các hàng và/hoặc chỉ mục nhiều hơn bạn có thể phù hợp trong 1 trang của đĩa hiệu suất tốt hơn. – Bohemian