6
我需要一個數字列作爲我正在工作的指示器,但我不希望它佔用每個記錄多於一個字節。如果我使用NUMBER(1),這是否符合我的要求?Oracle 11g:我可以創建只存儲1個字節的數字列嗎?
我需要一個數字列作爲我正在工作的指示器,但我不希望它佔用每個記錄多於一個字節。如果我使用NUMBER(1),這是否符合我的要求?Oracle 11g:我可以創建只存儲1個字節的數字列嗎?
A NUMBER(1)
列將佔用很多空間它需要存儲1位數字。這很可能是超過1個字節(負數將需要3個字節,0需要1個字節,數字1-9需要2個字節)
SQL> create table foo(col1 number(1));
Table created.
SQL> insert into foo values(1);
1 row created.
SQL> insert into foo values(9);
1 row created.
SQL> insert into foo values(-7);
1 row created.
SQL> select vsize(col1), col1 from foo;
VSIZE(COL1) COL1
----------- ----------
2 1
2 9
3 -7
與VARCHAR2(1 BYTE)
列的表,在另一方面,將使用每行存儲至多1個字節
SQL> create table bar(col1 varchar2(1));
Table created.
SQL> insert into bar values('Y');
1 row created.
SQL> insert into bar values('N');
1 row created.
SQL> select vsize(col1), col1 from bar;
VSIZE(COL1) C
----------- -
1 Y
1 N
好的答案和+1的desenstration – oscilatingcretin 2012-02-20 12:22:31