2012-02-16 5 views
3

VARCHAR2보다 VARCHAR2를 사용하면 VARCHAR2가 길이에 따라 데이터베이스에서 가변 크기 공간을 차지한다는 이점이 있습니다. 이 경우에 공백이 거의 없기 때문에 삽입 된 열 값이 널인 경우 특히 효과적입니다. 그래서 동일한 토큰에 의해 동일한 방식으로 동작하는 숫자에 대한 데이터 유형이 있습니까? 그래서 삽입 된 숫자가 null 일 때 DB에 공간이 낭비되지 않습니까?Oracle의 숫자에 대한 가변 크기 데이터 유형

+3

'VARCHAR2'와'VARCHAR'는 절대적으로 동일 합니다만 차이는 없습니다. 당신은 아마도'VARCHAR2'와'CHAR'의 차이점을 언급하고 있습니까? –

+0

"공간은 싸다"아니다; 사용하지 않는 테이블을 삭제하고 테이블을 다시 작성하는 등의 작업을 수행 할 수있는 공간의 양이 가까워지면 숫자 데이터 유형을 사용하는 것보다 훨씬 많은 시간을 절약 할 수 있습니다. – Ben

+0

@a_horse_with_no_name 내가 부끄럽다면 나에게 맞춰라. 그러나 VARCHAR2와 VARCHAR은 다르다고 생각한다. –

답변

4

예, 가변 길이 숫자 데이터 유형이 존재합니다 (NUMBER).

오라클은 정밀도에 필요한 최소 공간을 사용하여 정밀도 (유효 자릿수)와 눈금을 별도로 저장합니다 (소수점 이하 자리수는 1 바이트).

NUMBER (x, y)는 NUMBER의 하위 유형으로 일반 NUMBER와 같은 방식으로 물리적으로 저장되며 추가 제약이 있습니다.

AFAIK, 숫자에는 CHAR과 같은 값이 없습니다.

당신이 볼 수있는 방법을 내부적으로 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 

는 정밀 데이터 길이 증가를 볼 수 있듯이.

+0

문제가 부분적으로 해결되었지만 테이블 T에 NUMBER 형의 nullable 열 A가 있으면 생각해 봅니다. 그런 다음 모든 레코드에 대해 A 열에 null이있는 Table T에서 데이터베이스는 여하튼 그 위치에 준 공간 보유자로 공간을 할당합니까? –

+1

NULL 값은 값이있는 마지막 열 앞에있는 열 당 1 바이트를 사용합니다. 마지막 후행 NULL 열은 저장되지 않고 0 바이트를 사용합니다. –