Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

SQL Query untuk Melakukan Pencarian Radius berdasarkan Lintang Bujur

Menurut pendapat saya klausa WHERE akan menjadi lambat karena matematika yang terlibat, dan penggunaan fungsi dalam klausa WHERE akan mencegah database menggunakan indeks untuk mempercepat kueri - jadi, pada dasarnya, Anda akan memeriksa setiap restoran di database, dan lakukan matematika lingkaran besar di setiap baris, setiap kali Anda membuat kueri.

Secara pribadi saya akan menghitung koordinat TopLeft dan BottomRight dari sebuah persegi (yang hanya perlu dihitung kasar menggunakan pythagoras) dengan sisi yang sama dengan rentang yang Anda cari, dan kemudian melakukan tes klausa WHERE yang lebih rumit pada subset yang lebih kecil dari catatan yang ada di dalam bujur sangkar Lintang/Bujur tersebut.

Dengan Indeks Lat &Long di database, kueri

WHERE     MyLat >= @MinLat AND MyLat <= @MaxLat
      AND MyLong >= @MinLong AND MyLong <= @MaxLong

harus sangat efisien

(Harap dicatat bahwa saya tidak memiliki pengetahuan khusus tentang MySQL, hanya MS SQL)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Variabel pengguna aman PHP

  2. Izin Prosedur Tersimpan MySQL

  3. MySQL:periksa versi apa:32 bit atau 64 bit?

  4. Bidang multibahasa dalam tabel DB

  5. SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo gagal:nodename atau servname disediakan, atau tidak diketahui