Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Konfiguracja tabeli szerokości i długości geograficznej MySQL

Powinieneś przechowywać punkty w pojedynczej kolumnie typu danych Point które możesz zaindeksować za pomocą SPATIAL indeks (jeśli typ tabeli to MyISAM ):

CREATE SPATIAL INDEX sx_place_location ON place (location)

SELECT  *
FROM    mytable
WHERE   MBRContains
               (
               LineString
                       (
                       Point($x - $radius, $y - $radius),
                       Point($x + $radius, $y + $radius)
                       )
               location
               )
        AND Distance(Point($x, $y), location) <= $radius

To radykalnie poprawi szybkość zapytań, takich jak „znajdź wszystko w danym promieniu”.

Pamiętaj, że lepiej jest używać zwykłego TM współrzędne metryczne (wschodnia i północna) zamiast bieguna (szerokość i długość geograficzna). Dla małych promieni są one wystarczająco dokładne, a obliczenia są znacznie uproszczone. Jeśli wszystkie twoje punkty znajdują się na jednym półkuli i są daleko od biegunów, możesz użyć jednego południka centralnego.

Oczywiście nadal możesz używać współrzędnych biegunowych, ale wzory do obliczania MBR a odległość będzie bardziej złożona.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQLAlchemy:Jak usunąć z dołączeniem

  2. PHP, PDO, MySQL, Uwaga:Próba uzyskania właściwości non-object

  3. Wydrukuj dane w zestawie wyników wraz z nazwami kolumn

  4. zaktualizuj dane w div

  5. MySQL wybierając wczorajszą datę