Pregunta

Estoy escribiendo una aplicación web, es decir los Estados Unidos específica, por lo que el formato que otros países utilizan para los códigos postales no son importantes. Tengo una lista de códigos postales de Estados Unidos que estoy tratando de cargar en una tabla de base de datos que incluye el

  • 5 dígitos de EE.UU. código postal
  • latitud
  • longitud
  • código de clasificación USPS
  • código de estado
  • ciudad

El código postal es la clave principal, ya que es lo que voy a consultar en contra. Empecé a usar un medio int 5, pero que trunca los códigos postales que tienen ceros a la izquierda.

i considerado el uso de un char5 pero estoy preocupado por el impacto en el rendimiento de la indexación en contra de una variable de tipo char.

Así que mi pregunta es ¿cuál es el mejor tipo de datos MySQL para almacenar los códigos postales como?

Nota: he visto en varias otras cuestiones relacionadas con los códigos postales. Sólo estoy interesado en los Estados Unidos códigos postales de 5 dígitos. Así que no hay necesidad de tomar otros países formatos de códigos postales en cuenta.

¿Fue útil?

Solución

char (5) es la forma correcta de ir. indexación cadena es bastante rápido, sobre todo cuando se trata de un pequeño conjunto de datos tales.

Tiene usted razón en que nunca se debe utilizar un entero para un código postal, ya que no es verdaderamente de datos numéricos.

Editar para añadir: Echa un vistazo a esto para buenas razones por las que no utiliza los números para los datos no numéricamente importantes: ¿es una buena idea usar una columna entera para almacenar los códigos postales de Estados Unidos en una base de datos?

Otros consejos

ir con su INT medio (5) ZEROFILL, se debe añadir los ceros a la izquierda para usted. No hay necesidad de impacto en el índice y el rendimiento en un problema de formato.

Si lo hace Char (6), entonces él puede manejar códigos postales canadienses también.

Cuando se tiene en cuenta que hay un máximo de 100.000 código postal de 5 dígitos y lo poco espacio que ocuparía incluso si ha realizado la totalidad de mesa residente en memoria, no hay razón para no hacerlo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top