J'ai un grand ensemble de latitude et de longitude que je dois stocker dans une base de données MySQL. Je lis des conseils contradictoires sur le type de champ à utiliser.

Un exemple des données est ...

Lat        |  Long
------------------------
53.670827  |  -1.093991
50.894701  |  0.061115
52.288213  |  -1.822060

Selon ce document de Google, ils recommandent que le type de champ soit FLOTTEUR (10,6)

J'ai essayé cela et en entrant 57.098554 , il est changé en 57.098553 , mais en entrant -2,252504 stocke correctement.

Au lieu de cela, je prévoyais d'utiliser ce qui suit ...

Lat DECIMAL(10, 8)
Long DECIMAL(11,8)

Quelqu'un a-t-il une meilleure suggestion ou ai-je raison avec les paramètres DECIMAL?

4
fightstarr20 17 janv. 2017 à 17:35

2 réponses

Meilleure réponse

Les deux ont tort! Le document google auquel vous avez lié date de 2009, mysql a parcouru un long chemin depuis. En particulier l'introduction de JSON et attendez-le .... spatial types de données dans mysql 5.7

Depuis son introduction, la manière correcte de stocker un emplacement est sous forme de champ POINT. Cela ouvre également une gamme de fonctions de données spatiales pour vous. Ce que vous auriez autrement besoin d'écrire à la main, comme en fait les développeurs ont dû le faire avant son introduction.

Les fonctions géospatiales intégrées sont capables d'utiliser des index tandis que les fonctions maison sont souvent plus lentes en raison de l'impossibilité d'utiliser correctement les index.

4
e4c5 6 sept. 2017 à 23:45