I would go for TINYINT UNSIGNED
, since it is a basic type and MySQL knows how to deal with it efficiently. [0-53]
is in the 6 bits range: looking at saving 2 bits at the cost of some special structures and the overhead that goes along is probably not a good idea.
And Unsigned
since (depending on what language reads data) you want to deal with positive numbers. In the language you use, signed values may have some difference (like right-shifting bits for instance, that will extend the sign bit from left to right, if the value was processed). It depends on your needs and operations.
As for the CPU, the data bus is (usually) 32 or 64 bits. Using 32 instead instead of 8 bits, for instance, may have some advantages performance wise but
- obviously, each value takes 4 times more space
- performance wise, when retrieving many rows of data, MySQL optimizes the transfer (it doesn't return one byte at a time), so that shouldn't make a big difference.