Incluso 12 dígitos es ridículo. Recomiendo uno de los siguientes:
DECIMAL(8,6)/(9,6)
es suficiente para distinguir a dos personas de pie una al lado de la otra. Y sospecho que el GPS no es tan preciso. Total:9 bytes para las dos columnas.
DECIMAL(6,4)/(7,4)
es suficiente para casas o negocios, excepto que no hay componente vertical. 7 bytes.
Más discusión sobre precisión lat/lng:http://mysql.rjweb.org/doc .php/latlng#representation_choices o https://stackoverflow.com/a/50126941/1766831
En cuanto al rendimiento, no hay mucha diferencia. Estos son los puntos:
- Más lugares decimales ocupan más espacio en disco (y memoria RAM), por lo que ralentiza un poco las cosas.
- Más lugares decimales significa más cómputo para trabajar con los dígitos. Una vez más, esto es solo un pequeño golpe.
Otros tamaños que mencionaste:
lat DECIMAL(17, 13)
lon DECIMAL(17, 13)
ocupa un total de 16 bytes. Mientras tanto, esta pareja:
lat DECIMAL(14, 12)
lon DECIMAL(15, 12)
¡es solo un byte más pequeño!