Ho un elenco di record nel mio database e ogni record è associato a un codice postale.Qual è il modo migliore per interrogare un database per i record entro n miglia di un codice postale?
Qual è la "best practice" per interrogare tutti i record nel mio database per trovare tutte le voci che si trovano entro n miglia da un altro codice postale?
Ogni codice postale ha un lat/long associato ad esso nel database, quindi so che dovrò usarlo. Tuttavia, non riesco a immaginare di eseguire alcuna formula di distanza su ogni coppia di codici postali, convertendomi in miglia e rifiutando quelli che non rientrano nel mio raggio.
Sembra terribilmente computazionalmente costoso per una query così frequente.
Ho anche considerato di fare una pre-computazione di tutte le coppie ma sembra troppo grande da considerare anche. Ci sono circa ~ 40.000 codici postali negli Stati Uniti. Quindi, un database di tutte le coppie di ciascun codice postale sarebbe (40.000)^2 o 1,6 miliardi di voci.
So che questo è un problema comune sui siti Web, quindi spero che qualcuno possa indicarmi la direzione giusta per il modo migliore. Sto usando SQL Server 2008 e se ci sono soluzioni pre-costruite là fuori grandi allora, perché io davvero non voglio re-inventare la ruota in questa istanza.
questione connessa: Getting all zip codes within radius (questo non mi ha aiutato)
Inoltre, so di questo progetto SourceForge ma è abbandonato e non più in uso.
dang: bastonatemi! –