sql >> Database >  >> RDS >> Mysql

Hulp nodig bij het optimaliseren van een lat/Lon geo-zoekopdracht voor mysql

Ik denk dat je echt moet overwegen om PostgreSQL . te gebruiken (in combinatie met Postgis).

Ik heb MySQL voor geospatiale gegevens (voorlopig) opgegeven om de volgende redenen:

  • MySQL ondersteunt alleen ruimtelijke datatypes / ruimtelijke indexen op MyISAM-tabellen met de inherente nadelen van MyISAM (betreffende transacties, referentiële integriteit...)
  • MySQL implementeert enkele van de OpenGIS-specificaties alleen op MBR-basis (minimale begrenzende rechthoek), wat vrij nutteloos is voor de meeste serieuze georuimtelijke query-verwerking (ziedeze link in de MySQL-handleiding ). De kans is groot dat je vroeg of laat een deel van deze functionaliteit nodig hebt.

PostgreSQL/Postgis met de juiste (GIST) ruimtelijke indexen en de juiste zoekopdrachten kunnen extreem snel zijn.

Voorbeeld :bepalen van overlappende polygonen tussen een 'kleine' selectie van polygonen en een tabel met meer dan 5 miljoen (!) zeer complexe polygonen, bereken de mate van overlap tussen deze resultaten + sorteren. Gemiddelde runtime:tussen 30 en 100 milliseconden (Deze specifieke machine heeft natuurlijk veel RAM. Vergeet niet je PostgreSQL-installatie af te stemmen... (lees de documenten)).



  1. Online SQL-syntaxiscontrole die voldoet aan meerdere databases

  2. SET door de gebruiker gedefinieerde variabele in mysql return null?

  3. De hoogste n-waarden van elke groep vinden in MySQL

  4. Wat is het gegevenstype voor unix_timestamp (MySQL)?