したがって、VARCHAR よりも VARCHAR2 を使用する利点は、主に、VARCHAR2 がその長さに応じてデータベース内の可変サイズのスペースを占有することです。これは、挿入された列の値が null の場合に特に効率的です。この場合、実質的にスペースが占有されていないためです。同様に、挿入された数値がnullの場合にdbにスペースが無駄にならないように、同じように動作する数値のデータ型はありますか?
3372 次
1 に答える
4
はい、可変長の数値データ型が存在します。これはNUMBERと呼ばれます。
Oracle は、精度 (有効桁数) と位取りを別々に格納し、精度に必要な最小限のスペースを使用します (位取りは 1 バイトを取ります)。
NUMBER(x,y) は NUMBER のサブタイプであり、通常の NUMBER と同じ方法で物理的に格納されますが、追加の制約があるだけです。
私の知る限り、数値の CHAR に相当するものはありません。
Oracle がDUMP関数を使用して内部的にデータを保存する方法を確認できます。
SQL> select dump(1), dump(12345), dump(123456789) from dual;
DUMP(1) DUMP(12345) DUMP(123456789)
------------------ ------------------------ ------------------------------
Typ=2 Len=2: 193,2 Typ=2 Len=4: 195,2,24,46 Typ=2 Len=6: 197,2,24,46,68,90
ご覧のとおり、データ長は精度とともに増加します。
于 2012-02-16T10:29:30.857 に答える