web-dev-qa-db-ja.com

Oracle Table Design、小さな値の格納

Oracleでは、1桁のコード(0、1、2、3 4、またはNull、またはNull、1、1、または2など)などの小さな値を格納する場合、スペースの最適な方法は何ですか。そのような値を格納します。現在、これらの値をVARCHAR2(11 CHAR)として格納することが決定されたシステムを調べていますが、列タイプのオプションが間違っているようです。オンラインのOracleドキュメントと全能のGoogleから、ディスクタイプで最小のように見えるため、CHAR(1)を使用したよりスペースに最適なストレージオプションのようです。

私は自分の考えが完全に間違っているのでしょうか、それともどちらの方法でも問題ではないのでしょうか。

2
Eric Day

ドキュメントには、データ型のサイズが記載されています ここ

0(数値)は1バイトとして格納されます。他の1桁の数値は、2バイトで格納されます(1つは指数用、もう1つは仮数用)。これを自分でテストするには、テストテーブルを作成し、テストデータでVSIZE()関数を使用します( doc link )。

CHAR(n)nバイトに格納されます。

私はいつも番号をNUMBERに保存します。数兆行を処理しない限り、スペースの節約は十分に重要ではありません。

8
Philᵀᴹ