• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Jaki format liczbowy?

Object Storage Arubacloud
0 głosów
168 wizyt
pytanie zadane 12 grudnia 2019 w SQL, bazy danych przez Bartess Gaduła (3,630 p.)
edycja 12 grudnia 2019 przez Bartess
Cześć.
Mam tabelę, a w tej tabeli kolumnę. W tej kolumnie będę przechowywał wartości liczbowe z przedziału -xx,x - xxxx,x. W tym celu typ danych tej kolumny ustawiłem na DECIMAL 5,1.

Ale doszedł mi do dodawania do tabeli kolejny parametr, którego wartość w tym polu może osiągnąć wartość xxxxxx, co powoduje, że musiałem zmienić typ danych na DECIMAL 7,1.

Danych „mieszczących” się w DECIMAL 5,1 będzie ~6x więcej niż tych wymagających większego typu 7,1.

Jaki typ danych tej kolumny w tym przypadku były najlepszy (najoszczędniejszy)? DECIMAL czy FLOAT?
A może po prostu.... przed zapisaniem wartość liczbową pomnożyć x10 i zapisać w polu typu MEDIUMINT, a całą resztę później za każdym razem przeliczać?

1 odpowiedź

+1 głos
odpowiedź 17 grudnia 2019 przez bwaluk Mądrala (5,440 p.)
Między DECIMAL 5,1 a DECIMAL 7,1 nie ma różnicy w zajętości. Maksymalna zajętość dla precyzji 5 i 7 to 5 bajtów (ta sama wartość w zakresie precyzji 1-9).

Co do samej decyzji, który typ wybrać - to zależy od tego co te liczby reprezentują. DECIMAL jest lepszy do obliczeń księgowych gdzie we FLOAT mogą być problemy z precyzją (zgodnie z dokumentacją Microsoftu -  Floating point data is approximate; therefore, not all values in the data type range can be represented exactly.).
komentarz 17 grudnia 2019 przez Bartess Gaduła (3,630 p.)

Zasugerowałem się tym, że napisali:
DECIMAL[Length, Decimals] - rozmiar: Length + 1 lub Length + 2 bajtów
FLOAT - rozmiar 4 bajty.
Czyli DECIMAL 7,1 powinno zajmować wg tego zapisu 8-9 B.

Źródło: http://www.pytlak.pr.radom.pl/mysql/typy_danych_mysql.html

komentarz 17 grudnia 2019 przez bwaluk Mądrala (5,440 p.)

Nie wiem czemu, ale założyłem, że piszesz o MSSQL i mój wpis właśnie się do niego odnosi (https://docs.microsoft.com/en-us/sql/t-sql/data-types/decimal-and-numeric-transact-sql?view=sql-server-ver15).

W MySQL - tak, będzie lekka różnica w zajętości DECIMAL 7 zajmie 4 bajty, a DECIMAL 5 zajmie 3 bajty (https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html)

Podobne pytania

0 głosów
1 odpowiedź 156 wizyt
pytanie zadane 5 grudnia 2018 w C i C++ przez Cevet Nowicjusz (120 p.)
0 głosów
1 odpowiedź 68 wizyt
pytanie zadane 17 lipca 2016 w C i C++ przez niezalogowany
0 głosów
1 odpowiedź 220 wizyt
pytanie zadane 19 stycznia 2018 w SQL, bazy danych przez Grzegorz Mikina Dyskutant (8,060 p.)

92,579 zapytań

141,432 odpowiedzi

319,662 komentarzy

61,964 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...