ver unir una tablas tabla sola registros registro modificar misma indice eliminar ejemplo crear correos consultas cola borrar sql varchar convention

registros - unir dos tablas en una sola sql



¿Cuánto tiempo deberían ser los campos de correo electrónico SQL? (8)

De acuerdo con este texto, basado en los documentos adecuados de RFC, no es 320 sino 254: http://www.eph.co.uk/resources/email-address-length-faq/

Reconozco que una dirección de correo electrónico puede ser indefinidamente larga, por lo que cualquier tamaño que imponga en mi campo de dirección de correo varchar será arbitrario. Sin embargo, me preguntaba qué es el "estándar". ¿Cuánto tiempo lo hacen ustedes? (la misma pregunta para el campo Nombre ...)

actualización: Aparentemente, la longitud máxima para una dirección de correo electrónico es 320 (<= 64 parte del nombre, <= 255 dominio). ¿Usas esto?


El límite teórico es realmente largo, pero ¿realmente necesita preocuparse por estas largas direcciones de correo electrónico? Si alguien no puede iniciar sesión con un correo electrónico de 100 caracteres, ¿realmente le importa? Nosotros realmente preferimos que ellos no puedan.

Algunos datos estadísticos pueden arrojar algo de luz sobre el tema. Analizamos una base de datos con más de 10 millones de direcciones de correo electrónico. Estas direcciones no están confirmadas, por lo que no son válidas. Aquí hay algunos hechos interesantes,

  1. El más largo válido es 89.
  2. Hay cientos más largos hasta el límite de nuestra columna (255) pero aparentemente son falsos por inspección visual.
  3. El pico de la distribución de longitud está en 19.
  4. No hay cola larga. Todo cae bruscamente después de 38.

Limpiamos el DB desechando algo más de 40. La buena noticia es que nadie se ha quejado, pero la mala noticia es que no se borraron muchos registros.


En el pasado, he hecho 255 porque ese es el estándar tan arraigado de la entrada corta pero no demasiado corta. Eso, y soy una criatura de hábito.

Sin embargo, dado que el máximo es 319, haría nvarchar(320) en la columna. Tengo que recordar el @ !

nvarchar no usará el espacio que no necesita, por lo que si solo tiene una dirección de correo electrónico de 20 caracteres, solo ocupará 20 bytes. Esto está en contraste con un nchar que siempre ocupará su máximo (ajusta el valor con espacios).

También usaría nvarchar en lugar de varchar ya que es Unicode. Dada la volatilidad de las direcciones de correo electrónico, este es definitivamente el camino a seguir.


La siguiente dirección de correo electrónico tiene solo 94 caracteres:

i.have.a.really.long.name.like.seetharam.krishnapillai@AReallyLongCompanyNameOfSomeKind.com.au

  • ¿Una organización realmente le daría un correo electrónico tan largo?
  • Si fueran lo suficientemente estúpidos como para hacerlo, ¿usarías una dirección de correo electrónico así?
  • ¿ Alguien? Por supuesto no. Demasiado tiempo para escribir y demasiado difícil de recordar.

Incluso un tecnófobo de 92 años se daría cuenta de cómo registrarse para obtener una buena dirección corta de Gmail, y simplemente usar eso, en lugar de escribir esto en su página de registro.

El espacio en disco probablemente no sea un problema, pero existen al menos dos problemas para permitir que los campos de entrada del usuario sean mucho más largos de lo que deben ser:

  • Visualizarlos podría estropear su UI (en el mejor de los casos se los cortará, en el peor, empujarán sus contenedores y márgenes)
  • Los usuarios malintencionados pueden hacer cosas con ellos que no puedes anticipar (como los casos en que los piratas informáticos utilizaron una API en línea gratuita para almacenar una gran cantidad de datos)

Me gustan 50 caracteres:

[email protected]

Si un usuario en un millón tiene que usar su otra dirección de correo electrónico para usar mi aplicación, que así sea.

(Las estadísticas muestran que, en realidad, nadie ingresa más de 40 caracteres para la dirección de correo electrónico, por ejemplo, la respuesta de ZZ Coder https://.com/a/1297352/87861 )


Para el correo electrónico, independientemente de la especificación, casi siempre voy con 512 (nvarchar). Los nombres y apellidos son similares.

Realmente, debes ver cuánto te importa tener un poco de información adicional. Para mí, principalmente, no es una preocupación, así que me equivocaré por el lado conservador. Pero si ha decidido, a través de medios lógicos y precisos, que deberá ahorrar espacio, hágalo. Pero, en general, sea conservador con los tamaños de campo, y la vida será buena.

Tenga en cuenta que probablemente no todos los clientes de correo electrónico admitan el RFC, por lo que independientemente de lo que diga, puede encontrar diferentes cosas en la naturaleza.


RFC 5321 (la especificación SMTP actual, obsoletos RFC2821) establece:

4.5.3.1.1. Local-part

La longitud total máxima de un nombre de usuario u otra parte local es 64
octetos.

4.5.3.1.2. Dominio

La longitud total máxima de un nombre o número de dominio es de 255 octetos.

Esto pertenece solo a localpart @ domain, para un total de 320 caracteres ASCII (7 bits).

Si planea normalizar sus datos, tal vez dividiendo la parte local y el dominio en campos separados, tenga en cuenta otras cosas adicionales:

  • Una técnica conocida como VERP puede dar como resultado partes locales completas para el correo generado automáticamente (puede no ser relevante para su caso de uso)
  • los dominios son insensibles a las mayúsculas y minúsculas; recomendamos minicar la porción del dominio
  • las partes locales son sensibles a mayúsculas y minúsculas; [email protected] y [email protected] son direcciones técnicamente diferentes según las especificaciones, aunque la política en el dominio.com puede tratar las dos direcciones como equivalentes. Lo mejor es restringir el plegado de casos de parte local a dominios que se sabe que lo hacen.

Si realmente estás siendo colérico, haz un nombre de usuario varchar (60), varchar de dominio (255). Entonces puede hacer estadísticas ridículas sobre el uso del dominio que es un poco más rápido que hacerlo en un solo campo. Si se siente realmente optimista sobre la optimización, eso también hará que su servidor SMTP pueda enviar correos electrónicos con menos conexiones / mejor procesamiento por lotes.


Yo uso varchar (64) no creo que nadie pueda tener correo electrónico más largo