我需要一个数据类型来存储这个范围: [0 - 9]
。像这样的东西:
+-----+
| col |
+-----+
| 3 |
| 2 |
| 8 |
| 0 |
| 2 |
| 1 |
+-----+
在这种情况下,哪种数据类型最好?
最佳答案
尽管有文档,但我不清楚 DECIMAL(1,0)
的大小是否“四舍五入”到四个字节,或者单个数字是否算作“剩余数字”,从而导致整个单个字节的宽度数据类型。
无论如何,您不能使用比 TINYINT
更少的空间,因为 a TINYINT
is a single byte wide 和字节是计算机上的最小数据单位(没有进入位打包,这在表格数据上似乎不合理!)。
因此,在数字类型中,使用 TINYINT
。其他任何事情都是不必要的混淆。
话虽如此,我是 ENUM
的忠实粉丝,这对他们来说似乎是一个完美的案例。 Since your enumeration would have fewer than 255 possible values, like a TINYINT
it would only take a single byte.
ENUM('0', '1', '2', '3', '4', '5', '6', '7', '8', '9')
遗憾的是,写出来有点冗长。但至少现在您的值本质上是受范围限制的。
关于mysql - 存储单个数字的最佳数据类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34601778/