Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Benötigen Sie Hilfe bei der Optimierung einer Lat/Lon-Geosuche für MySQL

Ich denke, Sie sollten wirklich die Verwendung von PostgreSQL in Betracht ziehen (kombiniert mit Postgis).

Ich habe MySQL für Geodaten (vorerst) aus folgenden Gründen aufgegeben:

  • MySQL unterstützt nur räumliche Datentypen / räumliche Indizes auf MyISAM-Tabellen mit den inhärenten Nachteilen von MyISAM (in Bezug auf Transaktionen, referenzielle Integrität ...)
  • MySQL implementiert einige der OpenGIS-Spezifikationen nur auf einer MBR-Basis (Minimum Bounding Rectangle), was für die ernsthafteste Geodatenabfrage-Verarbeitung ziemlich nutzlos ist (siehe dieser Link im MySQL-Handbuch ). Wahrscheinlich werden Sie früher oder später einige dieser Funktionen benötigen.

PostgreSQL/Postgis mit geeigneten räumlichen Indizes (GIST) und geeigneten Abfragen können extrem schnell sein.

Beispiel :Bestimmen von überlappenden Polygonen zwischen einer 'kleinen' Auswahl von Polygonen und einer Tabelle mit über 5 Millionen (!) sehr komplexen Polygonen, Berechnen der Überlappung zwischen diesen Ergebnissen + Sortieren. Durchschnittliche Laufzeit:zwischen 30 und 100 Millisekunden (Diese spezielle Maschine hat natürlich viel RAM. Vergessen Sie nicht, Ihre PostgreSQL-Installation zu optimieren ... (lesen Sie die Dokumentation)).