Mesmo 12 dígitos é ridículo. Eu recomendo um dos seguintes:
DECIMAL(8,6)/(9,6)
é suficiente para distinguir duas pessoas que estão uma ao lado da outra. E suspeito que o GPS não seja tão preciso. Total:9 bytes para as duas colunas. DECIMAL(6,4)/(7,4)
é suficiente para casas ou empresas, exceto que não há componente vertical. 7 bytes. Mais discussão sobre precisão lat/lng:http://mysql.rjweb.org/doc .php/latlng#representation_choices ou https://stackoverflow.com/a/50126941/1766831
Quanto ao desempenho, não há muita diferença. Aqui estão os pontos:
- Mais casas decimais ocupam mais espaço em disco (e cache de memória RAM), o que torna as coisas um pouco mais lentas.
- Mais casas decimais significam mais computação para trabalhar com os dígitos. Novamente, isso é apenas um pequeno impacto.
Outros tamanhos que você mencionou:
lat DECIMAL(17, 13)
lon DECIMAL(17, 13)
ocupa um total de 16 bytes. Enquanto isso, este par:
lat DECIMAL(14, 12)
lon DECIMAL(15, 12)
é apenas um byte menor!