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

Menghitung jarak antara 400 kota dan mengoptimalkan MySQL untuk itu?

Saya melihat dua kemungkinan solusi.

Yang pertama:
Untuk setiap kota menyimpan di database garis lintang dan garis bujurnya; ketika pengguna mendapat kueri, Anda menghitung jarak dengan setiap kota lain dan mengembalikan hasil.
Pro adalah Anda dapat menambahkan setiap kota dalam db tanpa perlu menambahkan info lain.
Di sini Anda juga dapat menemukan rumus, sampel, dan kode untuk penghitungan jarak lintang-bujur...

Kedua:
Buat tabel cities_dist dengan tiga bidang:city1_id, city2_id, distance dan masukkan ke dalam setiap kemungkinan kombinasi di antara kota-kota Anda. Dengan itu Anda dapat menulis kueri dengan kota yang dipilih seperti city1_id atau city2_id.
Pro adalah Anda dapat menggunakan kueri sederhana tanpa perhitungan apa pun, sedangkan kekurangannya adalah Anda harus mengisi tabel ini kapan saja Anda memasukkan kota baru ke dalam database Anda.

DIEDIT setelah komentar pengguna:
Bayangkan Anda memiliki tiga kota

ID  NAME
1   New York
2   Rome
3   Berlin

Tabel itu akan terlihat seperti

CITY1  CITY2  DIST
1      2      1500
1      3      1200
2      3       400

Saat pengguna ingin terbang dari Berlin, Anda dapat menggunakan

SELECT c1.name, c2.name, cd.dist 
FROM cities_dist cd
  INNER JOIN cities c1 ON cd.city1 = c1.id
  INNER JOIN cities c2 ON cd.city2 = c2.id
WHERE cd.city1 = your_id
   OR cd.city2 = your_id
ORDER BY cd.dist ASC


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kenaikan Otomatis di Tabel Sementara

  2. Kesalahan Prosedur Tersimpan MySQL Karakter tak terduga:

  3. Bagaimana saya bisa menyimpan kata sandi dengan aman di MySQL dan mengautentikasi ke layanan eksternal?

  4. Nama tabel sensitivitas huruf MySQL di MacOS dengan sistem file tidak peka huruf besar-kecil

  5. PHPExcel:Kesalahan koordinat sel tidak valid