Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Hat es Auswirkungen auf die Leistung, wenn DECIMAL(17,13) sowohl für Breiten- als auch für Längengraddaten in MySQL verwendet wird?

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!