## Bagaimana untuk Mengoptimumkan Pertanyaan MySQL untuk Carian Geolokasi Tepat Menggunakan Latitud dan Longitud?

Patricia Arquette
Lepaskan: 2024-10-25 19:52:02
asal
342 orang telah melayarinya

## How to Optimize MySQL Queries for Accurate Geolocation Searches Using Latitude and Longitude?

Mengoptimumkan Pertanyaan MySQL untuk Carian Geolokasi Menggunakan Latitud dan Longitud

Dalam MySQL, mendapatkan semula data berdasarkan kedekatan geografi adalah tugas biasa. Apabila bekerja dengan nilai longitud dan latitud, adalah penting untuk menggunakan pertanyaan yang cekap untuk mengelakkan hasil yang tidak dijangka.

Pertimbangkan pertanyaan berikut yang cuba mencari baris dalam radius 25 batu dari latitud dan longitud tengah:

<code class="sql">SELECT *,(((acos(sin(($lat*pi()/180)) * sin((`latitude`*pi()/180))+cos(($lat*pi()/180))
* cos((`latitude`*pi()/180)) * cos((($lon - `longitude`)*pi()/180))))*180/pi())*60*1.1515)
AS `distance` FROM `geo_locations` HAVING `distance` <= 25 ORDER BY `distance` ASC</code>
Salin selepas log masuk

Walaupun pertanyaan ini biasanya berfungsi, ia boleh menghasilkan hasil yang tidak tepat untuk sesetengah baris, menunjukkannya lebih jauh daripada jejari yang ditentukan.

Untuk meningkatkan ketepatan, pertimbangkan pertanyaan dioptimumkan berikut:

<code class="sql">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</code>
Salin selepas log masuk

Dalam pertanyaan ini, parameter :lat dan :long mewakili latitud dan longitud titik tengah dan :jarak mewakili jejari dalam batu.

Perbezaan utama antara dua pertanyaan ialah penggunaan 6371 sebagai faktor penukaran untuk menukar radian kepada batu. Faktor ini lebih tepat daripada 3959, yang digunakan dalam pertanyaan asal. Selain itu, pertanyaan yang dioptimumkan menggunakan formula yang lebih ketat untuk mengira jarak berdasarkan latitud dan longitud.

Dengan melaksanakan pengoptimuman ini, anda boleh meningkatkan ketepatan pertanyaan MySQL anda dengan ketara apabila melakukan carian geolokasi menggunakan nilai latitud dan longitud, memastikan keputusan sentiasa dalam jarak jejari yang ditetapkan.

Atas ialah kandungan terperinci ## Bagaimana untuk Mengoptimumkan Pertanyaan MySQL untuk Carian Geolokasi Tepat Menggunakan Latitud dan Longitud?. 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!