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

Barbara Streisand
Lepaskan: 2024-10-28 04:58:01
asal
549 orang telah melayarinya

## 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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!