Rumah  >  Artikel  >  pangkalan data  >  ## Bagaimana untuk Meningkatkan Ketepatan Carian Lokasi Berasaskan Radius dalam MySQL?

## Bagaimana untuk Meningkatkan Ketepatan Carian Lokasi Berasaskan Radius dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-10-28 04:58:01551semak imbas

## How to Improve the Accuracy of Radius-Based Location Searches in MySQL?

Meningkatkan Ketepatan dalam MySQL Longitud dan Pertanyaan Latitud untuk Carian Berasaskan Radius

Apabila melakukan carian lokasi berasaskan jejari dalam mySQL, isu biasa sedang memperoleh keputusan yang menyimpang dengan ketara daripada jejari yang ditentukan. Percanggahan ini sering timbul daripada ralat dalam formula pengiraan jarak, yang membawa kepada pengukuran jarak yang tidak tepat.

Untuk menyelesaikan masalah ini, pertimbangkan pertanyaan yang diperhalusi yang menggunakan kaedah pengiraan jarak yang berbeza sedikit:

SELECT
    `id`,
    (
        6371 *
        acos(
            cos( radians( :lat ) ) *
            cos( radians( `lat` ) ) *
            cos(
                radians( `long` ) - radians( :long )
            ) +
            sin(radians(:lat)) *
            sin(radians(`lat`))
        )
    ) `distance`
FROM
    `location`
HAVING
    `distance` < :distance
ORDER BY
    `distance`
LIMIT
    25

Dalam pertanyaan ini:

  • :lat dan :long mewakili koordinat yang ditentukan pengguna.
  • lat dan panjang menandakan koordinat yang disimpan dalam pangkalan data.
  • : jarak sepadan dengan jejari yang ditentukan, diukur dalam batu (atau kilometer jika 3959 digantikan dengan 6371).

Formula ini mengira jarak berdasarkan formula Haversine, yang memberikan hasil yang lebih tepat daripada formula yang digunakan dalam pertanyaan asal anda. Dengan memasukkan formula yang disemak ini, anda boleh memperhalusi fungsi carian jejari anda, memastikan hasil yang dikembalikan mematuhi julat jejari yang ditentukan.

Atas ialah kandungan terperinci ## Bagaimana untuk Meningkatkan Ketepatan Carian Lokasi Berasaskan Radius dalam MySQL?. 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