存储单个数字的最佳数据类型?

时间:2016-01-04 23:31:47

标签: mysql types

我需要一种数据类型来存储此范围:[0 - 9]。像这样:

+-----+
| col |
+-----+
| 3   |
| 2   |
| 8   |
| 0   |
| 2   |
| 1   |
+-----+

在这种情况下,哪种数据类型最好?

3 个答案:

答案 0 :(得分:7)

尽管有文档记录,我还不清楚DECIMAL(1,0)的大小是否被"四舍五入"至4个字节或者单个数字是否计为"剩余数字",导致整个数据类型的单个字节宽度。

无论如何,你不能使用比TINYINT更少的空间,因为a TINYINT is a single byte wide和一个字节是计算机上最小的数据单元(没有进入bitpacking,而且没有#&}# 39;表格数据似乎有道理!)。

因此,在数字类型中,请使用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')
可悲的是,要写出来有点啰嗦。但至少现在你的价值观具有固有的范围限制。

答案 1 :(得分:2)

您可以使用DECIMAL(1,0)强制它存储单个数字。

请参阅https://dev.mysql.com/doc/refman/5.7/en/precision-math-decimal-characteristics.html

答案 2 :(得分:-1)

您可以使用int,bigint,smallint和tinyint取决于要求。

https://msdn.microsoft.com/en-us/library/ms187745.aspx

可以将值存储在枚举中并使用相同的类。

@Shafizadeh我是新来的,我提到在所有答案中首先使用枚举,但我的回答显然是消极的。