본문 바로가기

나만의 작은 공간/Books

오라클 SQL과 PL/SQL을 다루는 기술

공부를 하고 있는 책들에 대하여 정리를 할 예정이다. 

 

오랫동안의 방황을 거쳐 다시 제 정신을 찾은 거 같다. 하나님께 너무 감사하고 ,  이렇게 비루한 나를 사랑해주는 여자친구에게도 너무 감사하다.

 

공부를 열심히 시작하려고 한 만큼, 정리를 해두는 것이 좋을 거 같다. 그래서 이 시리즈를 시작하게 되었다. 

 

 

첫 책은 위의 제목을 가지고 있는 책이다. 내용은 thebook.io라는 사이트를 통해서 공개되었다. 

 

 


 

인덱스

 

인덱스 생성

 

    CREATE[UNIQUE] INDEX [스키마명.]인덱스명
    ON [스키마명.]테이블명(컬럼1, 컬럼2, ...);

확인

 

입력

    SELECT index_name, index_type, table_name, uniqueness
      FROM user_indexes
     WHERE table_name = 'EX2_10';
결과

    INDEX_NAME  INDEX_TYPE TABLE_NAME UNIQUENESS
    ----------- ---------- ---------- ----------
    EX2_10_IX01 NORMAL     EX2_10     UNIQUE

 

기본적으로 PK 로 지정해주면,. PK를 기준으로 인덱스를 생성해준다. 

따로 인덱스를 생성해줄 필요가 없다. 

 

입력

    SELECT index_name, index_type, table_name, uniqueness
      FROM user_indexes
     WHERE table_name = 'JOB_HISTORY';
결과

    INDEX_NAME     INDEX_TYPE TABLE_NAME  UNIQUENESS
    -------------- ---------- ----------- ----------
    PK_JOB_HISTORY NORMAL     JOB_HISTORY UNIQUE
 

결합인덱스

 

한개 이상의 컬럼으로 인덱스를 만든 것을 결합 인덱스라고 한다. 

 

입력

    CREATE INDEX ex2_10_ix02
    ON ex2_10 (col11, col2);
결과

    index EX2_10_IX02이(가) 생성되었습니다.
입력

    SELECT index_name, index_type, table_name, uniqueness
      FROM user_indexes
    WHERE table_name = 'EX2_10';
결과

    INDEX_NAME   INDEX_TYPE  TABLE_NAME UNIQUENESS
    ------------ ----------- ---------- -----------
    EX2_10_IX02  NORMAL      EX2_10     NONUNIQUE
    EX2_10_IX01  NORMAL      EX2_10     UNIQUE

 

인덱스를 생성할 때 고려해야 할 사항

❶ 일반적으로 테이블 전체 로우 수의 15%이하의 데이터를 조회할 때 인덱스를 생성한다
물론 15%는 정해진 것은 아니며 테이블 건수, 데이터 분포 정도에 따라 달라진다.

❷ 테이블 건수가 적다면(코드성 테이블) 굳이 인덱스를 만들 필요가 없다
데이터 추출을 위해 테이블이나 인덱스를 탐색하는 것을 스캔(scan)이라고 하는데, 테이블 건수가 적으면 인덱스를 경유하기보다 테이블 전체를 스캔하는 것이 빠르다.

❸ 데이터의 유일성 정도가 좋거나 범위가 넓은 값을 가진 컬럼을 인덱스로 만드는 것이 좋다

❹ NULL이 많이 포함된 컬럼은 인덱스 컬럼으로 만들기 적당치 않다

❺ 결합 인덱스를 만들 때는, 컬럼의 순서가 중요하다
보통, 자주 사용되는 컬럼을 순서상 앞에 두는 것이 좋다.

❻ 테이블에 만들 수 있는 인덱스 수의 제한은 없으나, 너무 많이 만들면 오히려 성능 부하가 발생한다

 

인덱스의 성능문제 해결 5원칙

 

❶ 어떤 컬럼을 인덱스로 만들 것인지, 인덱스는 몇 개나 만들 것인지(최대 5개를 넘어가지 않도록 한다) 결정한다.

❷ 효율적인 SQL문을 제대로 작성한다.

❸ 효율적인 SQL문을 제대로 작성한다.

❹ 효율적인 SQL문을 제대로 작성한다.

❺ 효율적인 SQL문을 제대로 작성한다.

 

'나만의 작은 공간 > Books' 카테고리의 다른 글

[Java 8 Labmda] 스트림  (0) 2017.04.21
[Java 8 Lambda] Chapter 2 Lambda Expression  (0) 2017.04.20
세계문학전집 어떻게 살 것인가?  (0) 2017.04.19
수학의 눈을 찾아라  (0) 2016.10.10