Pengoptimuman Prestasi untuk Pertanyaan Geo-Carian dalam PHP/MySQL
Pertanyaan geo-spatial yang melibatkan pengiraan jarak boleh menjadi mahal dari segi pengiraan, terutamanya dengan besar set data. Untuk mengoptimumkan prestasi pertanyaan sedemikian dalam MySQL, adalah penting untuk meneroka pelbagai pendekatan.
Seperti yang dinyatakan dalam pertanyaan anda, anda mempunyai jadual dengan kira-kira 200,000 entri pasangan latitud dan longitud. Tugasnya adalah untuk mencari entri dalam jejari tertentu daripada koordinat tertentu.
Pendekatan Kotak Sempadan
Satu teknik yang berkesan ialah mengira kotak sempadan yang melampirkan jejari yang diberikan mengelilingi sasaran lat/panjang. Ini melibatkan mencari nilai latitud dan longitud minimum dan maksimum yang mentakrifkan kotak sempadan. Pertanyaan kemudiannya boleh mengehadkan pengiraan jarak kepada subset baris dalam kotak sempadan, dengan ketara mengurangkan bilangan pengiraan. Kaedah ini diterangkan secara terperinci di tapak web Jenis Movable.
Pertimbangan Perpustakaan PHP
Menggunakan perpustakaan PHP untuk mengendalikan pengiraan boleh menjadi cekap jika perpustakaan dioptimumkan untuk kelajuan. Walau bagaimanapun, kebimbangan tentang ketepatan formula Haversine adalah sah.
Formula Vincenty
Untuk hasil yang lebih tepat, pertimbangkan untuk menggunakan formula Vincenty. Ia merupakan kaedah yang lebih tepat untuk mengira jarak bulatan yang besar pada Bumi elips. Contoh kod PHP yang diberikan dalam respons anda menggabungkan formula Vincenty, yang boleh anda laksanakan untuk meningkatkan ketepatan pengiraan anda.
Pertimbangan Lain
Untuk mengoptimumkan lagi prestasi :
Atas ialah kandungan terperinci Bagaimana untuk Mengoptimumkan Pertanyaan Carian Geo dalam PHP/MySQL untuk Set Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!