Дори 12 цифри е нелепо. Препоръчвам едно от следните:
DECIMAL(8,6)/(9,6)
е достатъчно, за да се разграничат две лица, стоящи един до друг. И подозирам, че GPS не е толкова точен. Общо:9 байта за двете колони.
DECIMAL(6,4)/(7,4)
е достатъчен за къщи или бизнеси, с изключение на това, че няма вертикален компонент. 7 байта.
Още обсъждане на точността на lat/lng:http://mysql.rjweb.org/doc .php/latlng#representation_choices или https://stackoverflow.com/a/50126941/1766831
Що се отнася до производителността, няма голяма разлика. Ето точките:
- Повече десетични знаци отнемат повече дисково пространство (и кеш паметта), така че забавя нещата леко.
- Повечето десетични знаци означава повече изчисления за работа с цифрите. Отново, това е само лек удар.
Други размери, които споменахте:
lat DECIMAL(17, 13)
lon DECIMAL(17, 13)
заема общо 16 байта. Междувременно тази двойка:
lat DECIMAL(14, 12)
lon DECIMAL(15, 12)
е само с един байт по-малък!