Non sono sicuro che database standard come MySql forniscano indicizzazione spaziale. Devi metterli in un indice spaziale persistente. Come gli alberi M Gli indici spaziali sono strutture di dati efficienti in grado di eseguire query di intervallo su metriche di distanza.
Potresti riuscire a trovare un'implementazione di M-tree o altre strutture di dati di indicizzazione spaziale come gli alberi K-D.
EDIT: Dopo che Martijn Pieters ha menzionato MySql con indici spaziali, l'ho cercato. Si scopre che ha un albero R ma il supporto non sembra eccezionale. Io uso solo innodb perché per lo più finisco per richiedere blocchi a livello di riga.
MySQL 5.6 implements an additional set of functions that can help create geo-enabled applications with MySQL. Storing polygons boundaries (ZIP code boundaries for example) is efficient and the new spatial functions (st_within, st_contains, etc) will produce correct results and will use spatial (rtree) indexes (for MyISAM tables only). The OpenGIS standard is very common and it is easy to obtain the data in this format or use the standard application which can “talk” this language. Unfortunately, st_distance function is not very usable for calculating distance between 2 points on Earth and it does not use an index. In this case it is still more feasible to calculate distances manually using the harvesine formula. Hopefully this will be fixed in the next mysql release.