2

是否有小于 smallint(16 位)的数据类型?我需要一个只有从 1 到 31 的数字的列,所以我认为 5 位就足够了,我不想浪费每个元组 11 位的开销来浪费空间。

4

3 回答 3

4

文档中没有这样的 1 字节整数,所以我认为最好的方法是使用 small int。如果您不考虑进行任何数学运算,您也可以只使用 varchar(2) (但这不是最好的主意)。

于 2012-09-09T20:30:57.677 回答
2

如果您需要 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 位边界。)

于 2012-09-09T23:01:24.023 回答
1

这是一个实际的担忧吗?浪费了多少磁盘和内存?您是否准备好应对因数据类型发生此类更改而导致的任何可能的减速或代码更改?

如果是肯定的,请查看位字符串类型

于 2012-09-09T20:28:47.990 回答