Rumah > Artikel > pangkalan data > Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Pangkalan Data untuk Carian Julat Geolokasi dalam MySQL?
Mengoptimumkan Pertanyaan Pangkalan Data untuk Pertanyaan Julat Geolokasi
Apabila berurusan dengan pangkalan data besar yang mengandungi data geografi, menjadi penting untuk mengoptimumkan pertanyaan untuk mendapatkan semula yang berkaitan sahaja rekod dalam julat tertentu. Satu senario sedemikian ialah memilih alamat dalam radius tertentu dari lokasi tertentu. Artikel ini meneroka cara menyelesaikan masalah ini dengan cekap menggunakan formula Haversine MySQL.
Formula Haversine
Formula Haversine ialah persamaan matematik yang digunakan untuk mengira jarak antara dua titik pada sfera. Dalam konteks data geografi, ia membolehkan kita menentukan jarak antara dua pasangan latitud-longitud.
MySQL Query
Menggunakan formula Haversine, kita boleh membina Pertanyaan MySQL untuk memilih hanya alamat dalam julat tertentu. Pertanyaan di bawah menunjukkan pendekatan ini:
<code class="sql">SELECT *, (3959 * acos(cos(radians(?)) * cos(radians(lat)) * cos(radians(lng) - radians(?)) + sin(radians(?)) * sin(radians(lat)))) AS distance FROM your_table HAVING distance < ?;</code>
Dalam pertanyaan ini, ? mewakili koordinat latitud dan longitud lokasi pengguna (titik asal), dan ? mewakili julat maksimum dalam batu nautika (atau kilometer jika 3959 digantikan dengan 6371).
Faedah Pendekatan Ini
Penyelesaian MySQL ini menawarkan beberapa kelebihan:
Petua Tambahan
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Pangkalan Data untuk Carian Julat Geolokasi dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!