是否存在小于smallint(16位)的数据类型?我需要一个只有1到31的数字的列,所以我认为5比特就够了,我不想浪费空间,每个元组的开销为11比特。
答案 0 :(得分:4)
在docs中没有这样的1字节整数,所以我认为最好的方法是使用小int。如果你不考虑做任何数学运算,你也可以只使用varchar(2)(但这不是最好的主意)。
答案 1 :(得分:1)
这是一个实际问题?浪费了多少磁盘和内存?您是否已准备好对数据类型进行此类更改所需的任何可能的减速或代码更改?
如果是肯定的,请查看bit string types。
答案 2 :(得分:1)
如果您需要31个值而不是31个数字,则可以使用CHAR(1)和CHECK()约束。
your_column char(1) not null
check (your_column in ('a','b','c'...'z','1','2','3','4','5'))
但我认为这不是一个好主意。 (无论如何,5位“类型”通常会填充到8位边界。)