2012-02-15 12 views
10

Para direcciones de correo electrónico, cuánto espacio debo dar a las columnas en SQL Server.NVARCHAR (?) Para direcciones de correo electrónico en SQL Server

me encontré con esta definición en la Wikipedia:

http://en.wikipedia.org/wiki/Email_address

El formato de las direcciones de correo electrónico es @ dominio local-parte en que el parte-local puede ser de hasta 64 caracteres de longitud y el nombre de dominio puede tener un máximo de 253 caracteres, pero la longitud máxima de 256 caracteres de una ruta directa o inversa restringe la dirección de correo electrónico completa a no más de 254 caracteres

Y éste:

http://askville.amazon.com/maximum-length-allowed-email-address/AnswerViewer.do?requestId=1166932

Así que por ahora, caracteres totales permitidas para dirección de correo electrónico es 64 (local parte) + 1 (signo "@") + 255 (dominio parte) = 320

Es posible que en el futuro aumenten el límite de parte local a 128 caracteres. que haría un total de 384 caracteres.

¿Alguna idea?

Respuesta

13

Siempre he usado 320 según su último cálculo. No le cuesta nada permitir más *, a menos que la gente lo abuse y guarde basura allí. Es podría le costó permitir menos, ya que tendrá usuarios frustrantes si tienen direcciones de correo electrónico legítimamente más largas y ahora tendrá que volver y actualizar el esquema, el código, los parámetros, etc. En el sistema que utilicé para trabajar con (un proveedor de servicios de correo electrónico), la dirección de correo electrónico más larga que encontré fue de 120 caracteres, y estaba claro que solo estaban haciendo una larga dirección de correo electrónico para sonrisas.

* No es del todo cierto, ya que las estimaciones de concesión de memoria se basan en la suposición de que la variación de ancho de columnas son la mitad de población, por lo que una columna más ancha almacenar los mismos datos puede tener lugar a muy diferentes características de rendimiento de algunas consultas .

Y he discutiendo si NVARCHAR es necesario para la dirección de correo electrónico. Todavía tengo que encontrar una dirección de correo electrónico con caracteres Unicode: sé que el estándar los admite, pero muchos sistemas existentes no lo hacen, sería bastante frustrante si esa fuera su dirección de correo electrónico.

Y si bien es cierto que NVARCHAR costes doble de espacio, con SQL Server 2008 R2 se puede beneficiar de la compresión Unicode, que básicamente trata a todos los caracteres no Unicode en una columna NVARCHAR como ASCII, para que pueda obtener los bytes adicionales espalda. Por supuesto, la compresión solo está disponible en Enterprise + ...

Otra forma de reducir los requisitos de espacio es utilizar una tabla central de búsqueda para todos los nombres de dominio observados, y almacenar LocalPart y DomainID con el usuario y almacenar cada nombre de dominio exclusivo una vez. Sí, esto hace que la programación sea más engorrosa, pero si tiene 80,000 direcciones de hotmail.com, el costo es 80,0000 x 4 bytes en lugar de 80,000 x 11 bytes (o menos con compresión).Si el almacenamiento o E/S es su cuello de botella, y no la CPU, esta es definitivamente una opción que vale la pena investigar.

Escribí sobre esto aquí:

http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-efficiently-in-sql-server/

+1

@tugberk lo siento en el retraso de notificación, pero escribí sobre esto aquí: http://www.mssqltips.com/sqlservertip/2657/storing-email-addresses-more-efficiently-in-sql-server/ –

+1

Sólo para info: ASP.NET membership provider create database "AspNetUsers" usando "nvarchar (256)" para el campo Email. – Yanga

+0

@Yanga ugh, gracias por eso. –

0

supongo VARCHAR (320) sería el límite normal para un nombre de dominio basado en ASCII y dirección de correo electrónico. ¿Pero no empezaremos a ver nombres de dominio unicode que aparecerán pronto?

http://en.wikipedia.org/wiki/Internationalized_domain_name

Tal NVARCHAR (320) es lo que deberíamos empezar a utilizar?

+1

Honestamente creo que será un * largo * tiempo antes de que comencemos a ver una amplia adopción de caracteres Unicode en nombres de dominio y direcciones de correo electrónico. La cantidad de servidores de correo electrónico que solo les afectará representa un gran impulso en su contra ... –

+0

Tienes razón. Si nos preocupamos por la longitud, deberíamos hacer lo mismo con Unicode. – tugberk

Cuestiones relacionadas