Przechowuję dużą listę punktów lnt / lat w bazie danych MySQL. W tej chwili są to rzutowane punkty dla Wielkiej Brytanii w M, ale w perspektywie długoterminowej chciałbym upewnić się, że mogę przechowywać współrzędne punktów dla całego świata. Jakiego typu danych powinienem użyć?
Zacząłem używać decimal(18,12)
, ale nie byłem pewien, czy ta precyzja jest potrzebna, czy też mogę po prostu użyć float
. Dołączyłem swój kod, na wypadek gdyby było jeszcze coś, co powinienem rozważyć:
CREATE TABLE UKTest
(
lat FLOAT,
lng FLOAT
)
Jestem całkiem nowy w SQL, więc nie jestem pewien, czy typ danych jest istotny podczas uruchamiania zapytania. Zakładałem, że ogólna pamięć będzie się różnić w zależności od typu zmiennej. Czy istnieje korzyść z zastosowania przestrzennej bazy danych w porównaniu z podstawową bazą danych MySQL do tego rodzaju pracy?
źródło
Chyba że jesteś związany z MySQL z jakiegoś innego powodu, powinieneś naprawdę rozważyć użycie przestrzennie włączonej bazy danych, takiej jak postgis, która ma obiekt Point (i Line, Polygon itp.) Do obsługi tych szczegółów. Otrzymujesz także wsparcie projekcji, kiedy wprowadzasz tę zmianę w całym świecie.
2019 : Dla osób takich jak ja, które również nie czytają komentarzy - MySQL obsługuje typy danych przestrzennych, podobno wolniejsze, bez dowodów.
źródło