Kueri SQL untuk menemukan jarak terdekat antar koordinat berjalan sangat lambat

0
Pilih

Saya memiliki kueri berikut yang benar-benar berfungsi. Dibutuhkan dalam set Latitude dan Longitude yang sulit dan menemukan set koordinat terdekat, bersama dengan kode posnya.

Saya memiliki kueri berikut yang memang berfungsi. Dibutuhkan dalam satu set Latitude dan Longitude dan menemukan set koordinat terdekat, bersama dengan kode posnya.

Yang bermasalah adalah kecepatan kueri. Saat ini diperlukan 3,8 detik untuk menjalankan dan saya memiliki 9000 koordinat terpisah untuk diperiksa.

Yang bermasalah adalah kecepatan kueri. Saat ini dibutuhkan 3,8 detik untuk menjalankan dan saya memiliki 9000 koordinat terpisah untuk diperiksa.

Semua saran tentang cara mempercepatnya akan sangat kami hargai.

Saran apa pun tentang cara mempercepatnya akan sangat kami hargai.
SELECT pcds, ROUND(MIN(distance), 4) AS distance FROM
(SELECT `postcode`.`pcds`,(
    6371 * acos (
      cos ( radians('51.4932392') )
      * cos( radians( `postcode`.`lat` ) )
      * cos( radians( `postcode`.`lng` ) -radians('-0.0846429') )
      + sin ( radians('51.4932392') )
      * sin( radians( `postcode`.`lat` ) )
    )
) AS distance
FROM postcode
ORDER BY distance
LIMIT 1
) AS First
SELECT pcds, ROUND(MIN(distance), 4) AS distance FROM (SELECT `postcode`.`pcds`,( 6371 * acos ( cos ( radians('51.4932392') ) * cos( radians( `postcode`.`lat` ) ) * cos( radians( `postcode`.`lng` ) -radians('-0.0846429') ) + sin ( radians('51.4932392') ) * sin( radians( `postcode`.`lat` ) ) ) ) AS distance FROM postcode ORDER BY distance LIMIT 1 ) AS First PILIH pcds, ROUND (MIN (jarak), 4) AS jarak DARI (PILIH `kode pos`.`pcds`, ( 6371 * acos ( cos (radian ('51 .4932392 ')) * cos (radian (`postcode`.`lat`)) * cos (radian (`kode pos`.`lng`) -radian ('-0,0846429')) + sin (radian ('51 .4932392 ')) * sin (radian (`kode pos`.`lat`)) ) ) SEBAGAI jarak DARI kode pos ORDER BY jarak BATAS 1 ) SEBAGAI Pertama

Sumber

sql mysql geospatial coordinates

-Akina

1 -Gordon Linoff

Menunggu jawabannya

Anda Mungkin Menarik

© 2021   Pemrograman.Net