Mysql
 sql >> Database >  >> RDS >> Mysql

Hai bisogno di aiuto per ottimizzare una ricerca geografica lat/lon per mysql

Penso che dovresti davvero considerare l'uso di PostgreSQL (in combinazione con Postgis).

Ho rinunciato a MySQL per i dati geospaziali (per ora) per i seguenti motivi:

  • MySQL supporta solo tipi di dati spaziali/indici spaziali su tabelle MyISAM con gli svantaggi intrinseci di MyISAM (riguardanti le transazioni, l'integrità referenziale...)
  • MySQL implementa alcune delle specifiche OpenGIS solo su una base MBR (rettangolo di delimitazione minimo) che è abbastanza inutile per la maggior parte dell'elaborazione di query geospaziali più serie (vediquesto link nel manuale MySQL ). È probabile che prima o poi avrai bisogno di alcune di queste funzionalità.

PostgreSQL/Postgis con indici spaziali (GIST) e query appropriate può essere estremamente veloce.

Esempio :determinando i poligoni sovrapposti tra una 'piccola' selezione di poligoni e una tabella con oltre 5 milioni (!) di poligoni molto complessi, calcola la quantità di sovrapposizione tra questi risultati + ordina. Durata media:tra 30 e 100 millisecondi (questa macchina in particolare ha molta RAM fuori rotta. Non dimenticare di ottimizzare l'installazione di PostgreSQL... (leggi i documenti)).