sql >> Databasteknik >  >> RDS >> Mysql

Behöver hjälp med att optimera en lat/Lon geo-sökning för mysql

Jag tycker att du verkligen borde överväga användningen av PostgreSQL (kombinerat med Postgis).

Jag har gett upp MySQL för geospatial data (för nu) på grund av följande skäl:

  • MySQL stöder endast rumsliga datatyper/rumsliga index på MyISAM-tabeller med MyISAMs inneboende nackdelar (beträffande transaktioner, referensintegritet...)
  • MySQL implementerar några av OpenGIS-specifikationerna endast på MBR-basis (minimum avgränsande rektangel) vilket är ganska värdelöst för de flesta seriösa geospatiala frågebehandlingar (seden här länken i MySQL-manualen ). Chansen är stor att du kommer att behöva en del av den här funktionen förr eller senare.

PostgreSQL/Postgis med korrekta (GIST) rumsliga index och korrekta frågor kan vara extremt snabba.

Exempel :bestämma överlappande polygoner mellan ett "litet" urval av polygoner och en tabell med över 5 miljoner (!) mycket komplexa polygoner, beräkna mängden överlappning mellan dessa resultat + sortera. Genomsnittlig körtid:mellan 30 och 100 millisekunder (Denna speciella maskin har naturligtvis mycket RAM-minne. Glöm inte att justera din PostgreSQL-installation... (läs dokumenten)).



  1. Hur använder du skriptvariabler i psql?

  2. Förstå SUM(NULL) i MySQL

  3. Dataanslutningsändringar 2020.24

  4. Varför är Oracle-tabell-/kolumn-/indexnamn begränsade till 30 tecken?