Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Prestasi Carian Kedekatan Lokasi dalam PHP dengan Pangkalan Data Besar?
Mengoptimumkan Pengiraan Jarak untuk Carian Kedekatan Lokasi
Masalah:
Skrip PHP anda mengira jarak antara lokasi tertentu dan banyak lokasi perniagaan dalam pangkalan data menggunakan formula Haversine. Walau bagaimanapun, dengan peningkatan saiz pangkalan data anda (5k perniagaan), anda bimbang tentang prestasi.
Penyelesaian: Manfaatkan Pengiraan Jarak Berasaskan Pangkalan Data
Untuk meningkatkan dengan ketara kecekapan carian anda, pertimbangkan untuk menggunakan pertanyaan pangkalan data yang menggabungkan formula Haversine secara langsung. Pendekatan ini memintas keperluan untuk mendapatkan semula semua data perniagaan dan melakukan pengiraan jarak dalam skrip PHP anda. Begini caranya:
Menggunakan klausa HAVING MySQL, anda boleh menggunakan penapis jarak pada set hasil:
SELECT id, ( 3959 * acos( cos( radians(37) ) * cos( radians( lat ) ) * cos( radians( lng ) - radians(-122) ) + sin( radians(37) ) * sin( radians( lat ) ) ) ) AS distance FROM markers HAVING distance < 25 ORDER BY distance LIMIT 0 , 20;
Dalam pertanyaan ini:
Oleh melakukan pengiraan ini dalam pangkalan data, anda secara drastik mengurangkan jumlah data yang perlu dipindahkan ke skrip PHP anda untuk pemprosesan selanjutnya. Pendekatan ini значительно meningkatkan prestasi, terutamanya untuk set data yang besar.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Prestasi Carian Kedekatan Lokasi dalam PHP dengan Pangkalan Data Besar?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!