Rumah > Artikel > pangkalan data > Bagaimana untuk Mengoptimumkan Pertanyaan GeoSpatial dalam MySQL untuk Alamat Dalam Radius?
MySQL dalam Julat Geospatial Query untuk Peta
Menyiasat data geografi daripada pangkalan data yang besar untuk memaparkan lokasi tertentu dalam julat tertentu ialah cabaran biasa dalam aplikasi pemetaan. Soalan ini meneroka cara untuk mengoptimumkan pengambilan semula alamat dalam radius 5 batu dari geolokasi yang diberikan pengguna.
Formula Haversine untuk Pengiraan Jarak
Untuk menentukan jarak antara dua titik di permukaan bumi, formula Haversine digunakan. Formula matematik ini mengira jarak bulatan besar, dengan mengambil kira kelengkungan Bumi serta latitud dan longitud titik.
Pengoptimuman Pertanyaan dengan Formula Haveline
Memanfaatkan Formula Haversine, pertanyaan MySQL yang disediakan hanya mendapatkan semula alamat yang berada dalam julat yang dikehendaki:
$sql = "SELECT *, (3959 * acos( cos( radians(" . $lat . ") ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(" . $lng . ") ) + sin( radians(" . $lat . ") ) * sin( radians( lat ) ) ) ) AS distance FROM your_table HAVING distance < 5";
Parameter dan Pembolehubah
Hasil
Pertanyaan mengeluarkan senarai alamat dengan jarak pengiraan masing-masing. Klausa HAVING memastikan bahawa hanya alamat dalam radius 5 batu yang ditentukan diambil semula, menghasilkan pemilihan rekod yang lebih cekap dan disasarkan. Pendekatan ini secara mendadak mengurangkan jumlah data yang dipindahkan dan diproses, meningkatkan prestasi keseluruhan aplikasi pemetaan.
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pertanyaan GeoSpatial dalam MySQL untuk Alamat Dalam Radius?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!