2012-02-17 13 views

risposta

14

Una colonna NUMBER(1) occuperà tuttavia molto spazio necessario per memorizzare un numero di 1 cifra. Che rischia di essere più di 1 byte (numeri negativi richiede 3 byte, un 0 richiede 1 byte, i numeri 1-9 richiedono 2 byte)

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 

una tabella con una colonna VARCHAR2(1 BYTE), dall'altro , utilizzerà al massimo 1 byte per riga di memoria

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 
+0

Buona risposta e +1 per la deomonstration – oscilatingcretin

Problemi correlati