Tôi luôn sử dụng 320 dựa trên tính toán sau của bạn. Nó không chi phí bạn bất cứ điều gì để cho phép nhiều hơn *, trừ khi mọi người lạm dụng nó và thứ rác trong đó. Nó có thể chi phí bạn cho phép ít hơn, vì bạn sẽ có một người dùng bực bội nếu họ có địa chỉ email dài hơn hợp pháp và bây giờ bạn sẽ phải quay lại và cập nhật giản đồ, mã, tham số, v.v. để làm việc với (một nhà cung cấp dịch vụ e-mail), địa chỉ e-mail dài nhất mà tôi đã xem một cách tự nhiên là khoảng 120 ký tự - và rõ ràng họ chỉ đang tạo một địa chỉ email dài cho các nụ cười.
* Không đúng sự thật, kể từ khi dự toán bộ nhớ cấp được dựa trên giả định rằng thay đổi chiều rộng cột là một nửa dân cư thưa thớt, do đó, một cột rộng lưu trữ các dữ liệu tương tự có thể đã dẫn tới đặc tính hiệu suất rất khác nhau của các truy vấn nhất định .
Và tôi đã tranh luận xem NVARCHAR
có cần thiết cho địa chỉ e-mail không. Tôi chưa đi qua một địa chỉ e-mail với các ký tự Unicode - Tôi biết tiêu chuẩn hỗ trợ họ, nhưng rất nhiều hệ thống hiện có không, nó sẽ được khá bực bội nếu đó là địa chỉ e-mail của bạn.
Và trong khi đúng là NVARCHAR
chi phí gấp đôi không gian, với SQL Server 2008 R2 bạn có thể hưởng lợi từ nén Unicode, xử lý cơ bản tất cả các ký tự không phải Unicode trong cột NVARCHAR
dưới dạng ASCII. Tất nhiên, nén chỉ khả dụng trong Enterprise + ...
Một cách khác để giảm yêu cầu về không gian là sử dụng bảng tra cứu trung tâm cho tất cả tên miền được quan sát và lưu trữ LocalPart
và DomainID
với người dùng và lưu trữ từng tên miền duy nhất Một lần. Có điều này làm cho lập trình rườm rà hơn, nhưng nếu bạn có 80.000 địa chỉ hotmail.com, chi phí là 80,0000 x 4 byte thay vì 80.000 x 11 byte (hoặc ít hơn với nén).Nếu lưu trữ hoặc I/O là nút cổ chai của bạn, và không phải CPU, đây chắc chắn là một lựa chọn đáng để điều tra.
tôi đã viết về vấn đề này ở đây:
http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-efficiently-in-sql-server/
Nguồn
2012-02-15 14:53:19
@tugberk xin lỗi trong thông báo chậm trễ nhưng tôi đã viết về điều này tại đây: http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-efficiently-in-sql-server/ –
Chỉ dành cho thông tin: nhà cung cấp thành viên ASP.NET tạo cơ sở dữ liệu "AspNetUsers" bằng cách sử dụng "nvarchar (256)" cho trường Email. – Yanga
@Yanga ugh, cảm ơn vì điều đó. –