2

smallint(16ビット)よりも小さいデータ型はありますか?1から31までの数字だけの列が必要なので、5ビットで十分であり、タプルあたり11ビットのオーバーヘッドでスペースを無駄にしたくないと思います。

4

3 に答える 3

4

ドキュメントにはそのような1バイト整数がないので、小さい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 に答える