Pregunta

Tengo problemas para que funcione una búsqueda por proximidad de código postal.He buscado y buscado en Google, pero todo lo que encuentro es demasiado lento o no puedo empezar a trabajar.Aquí está el problema:

Tengo una base de datos con una tabla con todos los códigos postales de EE. UU. (~70 500 de ellos) y tengo una tabla de varios miles de tiendas (~10 000+), que incluye su código postal.Necesito poder proporcionar un código postal y devolver una lista de las tiendas más cercanas a ese código postal, ordenadas por distancia.

¿Alguien puede señalarme un buen recurso para esto que haya usado y que pueda manejar tanta carga, o compartir una consulta que haya usado que funcione y sea bastante rápida?Sería muy apreciado.¡Gracias!

¿Fue útil?

Solución

Debes crear una tabla que tenga cada código postal con una latitud y longitud asociadas.Cuando alguien ingresa un código postal y una distancia, calcula el rango de latitudes y longitudes que se encuentran dentro de él y luego selecciona todos los códigos postales que se encuentran dentro de ese cuadro delimitador.Luego, selecciona las tiendas que tienen códigos postales dentro de ese conjunto, calcula su distancia desde el código postal proporcionado y ordena por él.(Utilizar el fórmula de haversina para calcular la distancia entre puntos en un globo)

Si la velocidad es su principal preocupación, es posible que desee calcular previamente todas las distancias.Tenga una tabla que contenga una columna de código postal de la tienda, el otro código postal y una columna de distancia.Puede restringir los otros códigos postales a códigos postales dentro de una cierta distancia (digamos 100 millas, o lo que sea) si necesita reducir las filas.Si no restringe los enlaces según la distancia, tendrá una tabla con > 700 millones de filas, pero ciertamente podrá realizar búsquedas rápidas.

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