FOK!forum / Digital Corner / [MYSQL] INT / SMALLINT
sabanzaterdag 17 mei 2008 @ 00:55
Ik heb een 'id' veld welke maar tot 9999 hoeft te gaan. Maakt het uit of ik SMALLINT of INT meegeef als type?
SMALLINT kan tot 65565 cijfers bevatten (dus voldoende in mijn geval)
INT kan net boven de 4 miljard cijfers bevatten.

Maakt het uit voor je performance?
Jumpzaterdag 17 mei 2008 @ 01:10
Ga dan maar voor SMALLINT, kan je wel eventuele overhead uitsparen waarschijnlijk.
sabanzaterdag 17 mei 2008 @ 01:12
quote:
Op zaterdag 17 mei 2008 01:10 schreef Jump het volgende:
Ga dan maar voor SMALLINT, kan je wel eventuele overhead uitsparen waarschijnlijk.
Maar maakt het echt wat uit in performance?
Bij bijvoorbeeld ~ 5 simpele queries/querys per seconde
Jumpzaterdag 17 mei 2008 @ 01:15
Als je een 286 als server hebt misschien wel, maar met vijf query's per seconde op een huidig systeem ga je het niet merken.
sabanzaterdag 17 mei 2008 @ 01:17
Wat voor type gebruik je bijvoorbeeld als je veld alleen 0 of 1 kan bevatten? TINYINT of (VAR)CHAR of??

/edit
Of ben ik gewoon een mierenneuker, dat het eigelijk allemaal niet uitmaakt?
Ripariuszaterdag 17 mei 2008 @ 01:40
quote:
Op zaterdag 17 mei 2008 00:55 schreef saban het volgende:
Ik heb een 'id' veld welke maar tot 9999 hoeft te gaan. Maakt het uit of ik SMALLINT of INT meegeef als type?
SMALLINT kan tot 65565 cijfers bevatten (dus voldoende in mijn geval)
INT kan net boven de 4 miljard cijfers bevatten.

Maakt het uit voor je performance?
Cijfers? Dat lijkt me niet. Enig idee hoe groot een getal is dat uit 4 miljard cijfers bestaat?
Ripariuszaterdag 17 mei 2008 @ 01:41
quote:
Op zaterdag 17 mei 2008 01:17 schreef saban het volgende:
Wat voor type gebruik je bijvoorbeeld als je veld alleen 0 of 1 kan bevatten? TINYINT of (VAR)CHAR of??

/edit
Of ben ik gewoon een mierenneuker, dat het eigelijk allemaal niet uitmaakt?
Wat dacht je van een boolean? Die kan alleen de waarden FALSE of TRUE hebben.
Jumpzaterdag 17 mei 2008 @ 01:42
quote:
Op zaterdag 17 mei 2008 01:41 schreef Riparius het volgende:

[..]

Wat dacht je van een boolean? Die kan alleen de waarden FALSE of TRUE hebben.
BOOL is sowieso een synoniem voor TINYINT(1) bij MySQL hoor.
Ripariuszaterdag 17 mei 2008 @ 02:01
quote:
Op zaterdag 17 mei 2008 01:42 schreef Jump het volgende:

[..]

BOOL is sowieso een synoniem voor TINYINT(1) bij MySQL hoor.
OK, dat ligt ook voor de hand als voor beide typen één byte wordt gebruikt (maar ik ben niet echt bekend met MySQL). Anders is het voor TS misschien een idee om met bitfields te gaan werken. Kun je 8 booleans opslaan in één TINYINT.
Fleischmeisterzaterdag 17 mei 2008 @ 03:17
Of je het nou gaat merken of niet, je kiest het kleinst mogelijke datatype waarmee je je data kan opslaan tenzij er een goede reden is om het niet te doen. Als die reden er niet is, wordt het SMALLINT. Als ik puur afga op de maximum waarden van beide types, bespaar je per record dan 2 bytes (2^16 vs. 2^32). Minder schijfgebruik, minder RAM gebruik.