Istnieje wyraźna najlepsza opcja z trzech sugerowanych przez Ciebie (plus jedna z komentarzy).
WIELKIE — używa tylko 8 bajtów, ale największy BIGINT
ma tylko 19 cyfr dziesiętnych; jeśli podzielisz przez 10, największa wartość, jaką możesz przedstawić, to 9,22, co nie jest wystarczającym zakresem.
PODWÓJNE — ma tylko 15–17 cyfr dziesiętnych dokładności; ma wszystkie znane wady arytmetyki zmiennoprzecinkowej.
VARCHAR — użyje 20+ bajtów, jeśli masz do czynienia z 18 miejscami po przecinku; będzie wymagać stałych konwersji string↔int; nie można posortować; nie można porównać; nie można dodać w DB; wiele wad.
DZIESIĘTNY(27,18) – jeśli używasz MySQL, zajmie to 12 bajtów (4 dla każdej grupy 9 cyfr ). Jest to całkiem rozsądny rozmiar pamięci i ma wystarczający zasięg, aby obsłużyć ilości tak duże, jak miliard lub tak małe, jak jeden Wei. Można go sortować, porównywać, dodawać, odejmować itp. w bazie danych bez utraty precyzji.
Użyłbym DECIMAL(27,18)
(lub DECIMAL(36,18)
jeśli potrzebujesz przechowywać naprawdę ogromne wartości), aby przechowywać wartości pieniężne kryptowaluty.