sql >> Databáze >  >> RDS >> Mysql

Vyhledejte v tabulce bod v polygonu pomocí MySQL

Po nočním spánku jsem našel následující řešení.

set @p = GeomFromText('POINT(23.923739342824817 38.224714465253733)');
select municipalID FROM ecovis.municipal_border
where ST_Contains(municipal_border.boundary, @p);

Funguje pro MySQL 5.6.1, kde předpona ST_ I když nemám žádná měření z klasického přístupu (rentgenový algoritmus), věřím, že je to docela rychlé. K nalezení bodu ve 2700 polygonech potřebuje 0,17 sekundy, přičemž některé polygony mají mnohem více než 1500 bodů.



  1. Relevance fulltextového vyhledávání se měří v?

  2. Postgres - Transponujte řádky do sloupců

  3. Optimalizace SELECT dotazu, který běží pomalu na Oracle, který běží rychle na SQL Server

  4. Použití RStudio s nesystémovou verzí unixODBC Driver Manager