복붙노트

[SQL] 큰 길이 VARCHAR2 열을 정의 영향

SQL

큰 길이 VARCHAR2 열을 정의 영향

값이 이상 10 바이트 수없는 경우 VARCHAR2 (1000) 대신 오라클의 VARCHAR2 (10)와 열을 정의하는 효과는 무엇인가?

열은 값을 저장하는 데 정말 필요한 공간을 하는가, 또는 그 테이블 / 인덱스의 크기 / 성능에 부정적인 영향을 것인가?

해결법

  1. ==============================

    1.대답은 당신이 PL / SQL 프로그램에서 데이터베이스 테이블의 열 또는 변수에 대해 얘기하고 있는지 여부에 따라 달라집니다.

    대답은 당신이 PL / SQL 프로그램에서 데이터베이스 테이블의 열 또는 변수에 대해 얘기하고 있는지 여부에 따라 달라집니다.

    데이터베이스 열

    사용되는 저장의 양이 저장되는 데이터의 크기에 비례한다.

    PL / SQL 변수

    변수가 크기 1 4000 (11g +) / 1999 (10g 이하)로 선언 된 경우, 메모리는 최대 길이 (즉 VARCHAR2 (100)의 메모리의 적어도 100 바이트를 필요로한다)을 할당한다.

    가변 크기는 4,001 (11g +) / 2000 (10g 이하) 이상으로 선언 된 경우, 메모리에 저장된 데이터의 크기에 따라 할당 될 것이다. (변수의 값이 어떻게 메모리 크기를 조정, 변경되는 경우 흥미로운 측면의 문제는 것 - 그것은 새로운 크기의 다른 버퍼를 재 할당 않습니다)

    PL / SQL 데이터 유형 : 10g에 대한 참조

    11g에 대한 참조 : PL / SQL 코드의 메모리 오버 헤드를 방지

  2. ==============================

    2.데이터베이스에서 아무런 차이가 없다. VARCHAR2 가변 길이로 저장된다 선언 길이 만 제한된다.

    데이터베이스에서 아무런 차이가 없다. VARCHAR2 가변 길이로 저장된다 선언 길이 만 제한된다.

    그들이 열이 VARCHAR2로 정의되는 것을 볼 경우, 일부 클라이언트 응용 프로그램 (1000) 대신 (10)의 열 당 1000 바이트를 예약한다

  3. ==============================

    3.당신이 처리 할 준비가되어 최대 길이와 열 크기를 정의합니다. 나는 데이터베이스에 파일을로드하고있어 준비 테이블, 위해, 나는 VARCHAR2 (4000)를 사용할 수 있습니다. 데이터가 데이터베이스에있는 모든 그럼, 일단 난에 (데이터 유형, 데이터 길이, 최소 / 최대 값, 허용 문자를 ...) 무엇을해야 검증 할 적절한 정의와 컬럼에 전달 된 유효한 값을 가질 수 있습니다 / 제약.

    당신이 처리 할 준비가되어 최대 길이와 열 크기를 정의합니다. 나는 데이터베이스에 파일을로드하고있어 준비 테이블, 위해, 나는 VARCHAR2 (4000)를 사용할 수 있습니다. 데이터가 데이터베이스에있는 모든 그럼, 일단 난에 (데이터 유형, 데이터 길이, 최소 / 최대 값, 허용 문자를 ...) 무엇을해야 검증 할 적절한 정의와 컬럼에 전달 된 유효한 값을 가질 수 있습니다 / 제약.

    정의 / 제약 조건에 맞지 않는 데이터가 어떤 까다로운 행 단위 코딩없이 거부 테이블에 떨어져 펌핑됩니다, 그래서 나는 DML 오류 로깅을 활용할 수 있습니다.

    당신이 (1000)는 VARCHAR2이 경우, 어느 시점에서 당신은 당신이 예상 한 것보다 더 이상 데이터가 거기에 넣어 얻을 것이다 (일부 문자는 멀티 바이트 문자 집합이기 때문에 당신은 10 문자열을 얻을 수 있지만, 14 바이트를 가지고있는 수 있습니다 예를 들어, 값).

  4. from https://stackoverflow.com/questions/1882073/impact-of-defining-varchar2-column-with-greater-length by cc-by-sa and MIT license