Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zoptymalizować zapytanie SQL z obliczaniem odległości według długości i szerokości geograficznej?

Oto kilka pomysłów, z których niektóre mogą nie mieć zastosowania w zależności od konkretnej sytuacji.

  1. Możesz dokonać konwersji szerokości i długości geograficznej na radiany i zapisać je również w rzędzie. Pozwoliłoby to zaoszczędzić na kosztach tych obliczeń (w rzeczywistości koszt byłby naliczony raz podczas przechowywania danych).
  2. Jeśli Twoja tabela jest bardzo duża, możesz użyć prostego liniowego obliczania odległości zamiast formuły Haversince, aby ograniczyć wyniki, do których stosujesz formułę Haversince.
  3. Jeśli masz w tabeli inne dane, które posłużyłyby jako dobry pierwszy filtr (kraj/region/itd.), możesz je najpierw zastosować.
  4. Możesz zmienić kolejność złączeń, aby były stosowane po filtrze odległości, dzięki czemu nie ponosisz kosztów złączenia na danych, które się nie kwalifikują.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Błąd inicjalizacji bazy danych Spring Boot MySQL z procedurami składowanymi

  2. Wstrzyknięcie SQL, które omija mysql_real_escape_string()

  3. Poprzedzenie * (gwiazdką) przed wyszukiwaniem pełnotekstowym w MySQL

  4. Zapytanie pełnotekstowe z pojedynczym cytatem

  5. Czy MySql obsługuje sp_getapplock?