von inko |
Ein Byte ist nunmal die kleinste Einheit, um Daten zu speichern, aber man könnte dieses Byte natürlich noch für weitere Zwecke nutzen:
3 Zustände mittels tinyint(1)
0 0 0 = 0
1 0 0 = 1
0 1 0 = 2
1 1 0 = 3
0 0 1 = 4
1 0 1 = 5
0 1 1 = 6
1 1 1 = 7 |
von c3o |
anscheinend nicht
http://dev.mysql.com/doc/mysql/de/Storage_requirements.html |
von c00n |
ich habe die Doku auf Mysql.com so verstanden, das der parameter hinter dem variablentyp auch bei numerischen typen die größe in byte ist... auf der seite auf die du verweist steht jedoch dazu, dies wäre die "maximum display size".
das erklärt, warum das tinyint weniger platz verbraucht als das int.
thx@michael
der platzverbrauch von tinyint ist der gleiche wie der von varchar(1) (<- hier ist wirklich die länge in zeichen<=>byte gemeint). da ich aber zum speichern der relevanten information (ja || nein, true || false) nur ein bit bräuchte ist das immer noch platzverschwendung.
gibts denn da nichts kleineres?
|
von michaelh |
Je nach Datentyp wird Speicher reserviert.
TINYINT sind ganze Zahlen von -128 bis 127.
INT sind Zahlen von etwa -2147483648 bis etwa 2147483647.
Hier findest du eine Auflistung:
http://dev.mysql.com/doc/mysql/en/Column_types.html
Benutzt du nur ein TINYINT Feld wird pro Datensatz nur der Speicher reserviert, der benötigt würde um den maximal Wert zu speichern.
Bei INT dementsprechend auch der Speicher für die größtmögliche Zahl. Welche Zahl gespeichert wird ist jedoch egal. Pro Datensatz wird immer der gleicher Speicher reserviert.
Für TRUE und FALSE bzw. 1 und 0 würde ich VARCHAR(1) benutzen. Char ist immer nur ein Zeichen. |
von c00n |
welcher ist der kleinst mögliche Datentyp in mysql?
die Daten, die ich speichern möchte sind in Java als Boolean vorhanden -> 1 Bit. In allen Beschreibungen, die ich zu mysql Datentypen und Create Tables finde, ist der kleinste Datentyp 1 Byte groß.
Des weiteren habe ich beobachtet, das wenn ich TINYINT(1) verwende die Datenbank nur 1/3 so groß wird, als wenn ich INT(1) verwende. Kann mir das jemand erklären? |