Selbst 12 Ziffern sind lächerlich. Ich empfehle eines der folgenden:
DECIMAL(8,6)/(9,6)
reicht aus, um zwei nebeneinander stehende Personen zu unterscheiden. Und ich vermute, GPS ist nicht so genau. Insgesamt:9 Bytes für die beiden Spalten.
DECIMAL(6,4)/(7,4)
reicht für Häuser oder Geschäfte aus, außer dass es keine vertikale Komponente gibt. 7 Byte.
Weitere Diskussionen über Lat/Lng-Präzision:http://mysql.rjweb.org/doc .php/latlng#representation_choices oder https://stackoverflow.com/a/50126941/1766831
Was die Leistung betrifft, gibt es keine großen Unterschiede. Hier sind die Punkte:
- Mehr Dezimalstellen benötigen mehr Speicherplatz auf der Festplatte (und im RAM-Cache), was die Dinge etwas verlangsamt.
- Mehr Dezimalstellen bedeuten mehr Rechenaufwand für die Arbeit mit den Ziffern. Auch dies ist nur ein kleiner Treffer.
Andere Größen, die Sie erwähnt haben:
lat DECIMAL(17, 13)
lon DECIMAL(17, 13)
dauert insgesamt 16 Bytes. In der Zwischenzeit dieses Paar:
lat DECIMAL(14, 12)
lon DECIMAL(15, 12)
ist nur ein Byte kleiner!