Ich habe eine Liste von Datensätzen in meiner Datenbank und jeder Datensatz ist mit einer Postleitzahl verknüpft.Was ist der beste Weg, um eine Datenbank nach Datensätzen innerhalb von n Meilen von einer Postleitzahl abzufragen?
Was ist die "Best-Practice" für die Abfrage aller Datensätze in meiner Datenbank, um alle Einträge zu finden, die innerhalb von n Meilen einer anderen Postleitzahl liegen?
Jede Postleitzahl hat einen lat/long damit in der Datenbank, so dass ich weiß, dass ich das verwenden muss. Ich kann mir jedoch nicht vorstellen, für jedes Paar Postleitzahlen eine Entfernungsformel zu erstellen, die in Meilen umgerechnet wird und diejenigen zurückweist, die nicht in meinem Umkreis liegen.
Das scheint für eine solche allgemeine Abfrage sehr rechenintensiv zu sein.
Ich habe auch überlegt, eine Vorberechnung aller Paare zu machen, aber es scheint zu groß, um auch zu berücksichtigen. Es gibt ungefähr ~ 40.000 Postleitzahlen in den USA. Eine Datenbank mit allen Paaren jeder Postleitzahl wäre also (40.000)^2 oder 1,6 Milliarden Einträge.
Ich weiß, das ist ein häufiges Problem auf Websites, also hoffentlich kann mir jemand in die richtige Richtung für den besten Weg zeigen. Ich benutze SQL Server 2008 und wenn es vorgefertigte Lösungen da draußen dann groß, denn ich wirklich möchte nicht das Rad in diesem Fall neu erfinden.
Verwandte Frage: Getting all zip codes within radius (das hat mir nicht helfen)
Auch weiß ich, dieses SourceForge Projekt, aber es ist verfallenen und nicht mehr in Gebrauch.
dang: beat me to it! –