Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Prestasi Carian Kedekatan Lokasi dalam PHP dengan Pangkalan Data Besar?

Bagaimanakah Saya Boleh Mengoptimumkan Prestasi Carian Kedekatan Lokasi dalam PHP dengan Pangkalan Data Besar?

Linda Hamilton
Linda Hamiltonasal
2024-11-09 06:46:02521semak imbas

How Can I Optimize Location Proximity Search Performance in PHP with a Large Database?

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:

  • 37 dan - 122 ialah nilai latitud dan longitud sampel untuk lokasi rujukan.
  • Tapis klausa HAVING hasil berdasarkan lajur jarak yang dikira, memastikan bahawa hanya lokasi dalam radius 25 unit dikembalikan.
  • Klausa ORDER BY mengisih keputusan dalam tertib jarak menaik.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn