Anda dapat menggunakan ekstensi spasial mysql dan menyimpan lintang dan bujur sebagai tipe data titik dan menjadikannya indeks spasial. Dengan cara itu Anda dapat menyusun ulang koordinat di sepanjang kurva dan mengurangi dimensi serta melestarikan informasi spasial. Anda dapat menggunakan indeks spasial sebagai kotak pembatas untuk memfilter kueri dan kemudian menggunakan rumus harvesine untuk memilih hasil yang optimal. Kotak pembatas Anda harus lebih besar dari radius lingkaran besar. Mysql menggunakan rtree dengan beberapa indeks spasial dan contoh saya adalah tentang kurva z atau kurva hilbert:https://softwareengineering.stackexchange.com/questions/113256/what-is-the-difference-between-btree-and-rtree-indexing .Kemudian Anda dapat memasukkan koordinat geografis langsung ke kolom titik:http://dev.mysql.com/doc/refman/5.0/en/creating-spatial-values.html . Atau Anda dapat menggunakan tipe data geometri:http:// markmaunder.com/2009/10/10/mysql-gis-extensions-quick-start/ . Kemudian Anda dapat menggunakan fungsi MBRcontains seperti ini: http://dev.mysql.com/doc/refman/4.1/en/relations-on-geometry-mbr.html atau fungsi lainnya:http://dev.mysql.com/doc/refman/5.5/en/functions-for-testing-spatial-relations-between-geometric-objects.html . Oleh karena itu Anda memerlukan kotak pembatas. Berikut beberapa contohnya:
- Menyimpan Lat Nilai lng di MySQL menggunakan Spatial Point Type
- https://gis.stackexchange.com/questions/28333/how-to-speed-up-this-simple-mysql-points-in-the-box-query
Berikut adalah contoh sederhana dengan tipe data titik:
CREATE SPATIAL INDEX sx_place_location ON place (location)
SELECT * FROM mytable
WHERE MBRContains
(
LineString
(
Point($x - $radius, $y - $radius),
Point($x + $radius, $y + $radius)
)
location
)
AND Distance(Point($x, $y), location) <= $radius
Saya tidak yakin apakah itu berfungsi karena menggunakan variabel radius dengan fungsi kotak pembatas. Menurut saya MBRwithin sedikit lebih sederhana, karena tidak memerlukan argumen apa pun:Mysql:Mengoptimalkan penemuan super node di kumpulan pohon bersarang .