Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Carian Berasaskan Lokasi untuk Pangkalan Data Perniagaan Besar?

Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Carian Berasaskan Lokasi untuk Pangkalan Data Perniagaan Besar?

Patricia Arquette
Patricia Arquetteasal
2024-11-08 09:02:01860semak imbas

How Can I Optimize Location-Based Search Queries for Large Business Databases?

Mengoptimumkan Carian Berdasarkan Lokasi

Mencari lokasi berdekatan dengan cekap adalah penting untuk aplikasi seperti pemetaan dan navigasi. Formula Haversine ialah kaedah yang digunakan secara meluas untuk mengira jarak antara dua titik pada sfera. Formula ini boleh dilaksanakan secara langsung dalam SQL untuk mengoptimumkan pertanyaan carian berasaskan lokasi.

Dalam kes anda, anda bimbang tentang prestasi pengiraan jarak untuk lebih 5k perniagaan. Pertimbangkan untuk menggunakan pertanyaan MySQL berikut dengan formula Haversine:

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, gantikan "37" dan "-122" dengan latitud dan longitud lokasi pengguna. Dengan mengira jarak dalam pangkalan data, anda menghapuskan keperluan untuk mendapatkan semula semua perniagaan dan melakukan pengiraan jarak dalam PHP.

Menggunakan pendekatan yang dioptimumkan ini, anda boleh meningkatkan kelajuan carian lokasi berdekatan anda dengan ketara, menjadikannya sesuai untuk mengendalikan pangkalan data yang besar. Adalah penting untuk mengindeks lajur yang terlibat dalam pengiraan jarak untuk prestasi optimum.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengoptimumkan Pertanyaan Carian Berasaskan Lokasi untuk Pangkalan Data Perniagaan 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