[MySQL] Typ pola dla currency

0

Co jest najlepsze ?
Double czy Decimal ?
Do bazy wpadaja wartosci juz zaokraglone przez program. Max precyzja mi potrzebna to 4, albo 5 miejsc po przecinku.
Jaki typ pola ustawic ?

0

DECIMAL(15,4) - 11 cyfr całości i 4 po przecinku, razem 15 cyfr.

0

a jaki jest tego sizeof ?
8 bajtow ?

0

to zależy od ilości cyfr...

W przypadku DECIMAL(15,4) potrzeba 5 bajtów na część całkowitą i 3 bajty na część ułamkową czyli razem 8 bajtów.
W przypadku DECIMAL(11,3) potrzeba 4 bajty na część całkowitą i 2 bajty na część ułamkową razem 6 bajtów.

Generalnie zasada jest taka, że na 4 bajtach możesz upakować max. 9 cyfr, na 3 bajtach 6 cyfr, na 2 bajtach 4 cyfry, a na jednym bajcie 2 cyfry... Osobno liczysz dla części ułamkowej, osobno dla całkowitej.

0

aha, dzieki za wyjasnienie.
Generalnie takie dane trzymalem zawsze jako Double, ale dosc czeste sa selecty (SUMy i AVGi).
Jak sadzisz, lepiej konwertowac na ten Decimal ?

0

Typ DECIMAL jest przeznaczony do zastosowań w których niezbędna jest precyzja, np. do przechowywania kwot pieniędzy w programie księgowym. Jeżeli potrzebujesz przechowywać wartość dokładnie taką jaka została wprowadzona to użyj typu DECIMAL.

Jeszcze jedna uwaga... wymagania pamięciowe podałem dla wersji MySQL >= 5. W starszych wersjach typ DECIMAL był przechowywany inaczej.

0

A powiesz mi jak wylaczyc cachowanie w Query browserze abym mogl potestowac roznice wykonania w selektach ?

0

SELECT SQL_NO_CACHE reszta_selecta FROM itd...

albo

SET SESSION query_cache_type = OFF;

1 użytkowników online, w tym zalogowanych: 0, gości: 1