ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • PK 컬럼 순서, 대충 하지 말자
    Technique/RDBMS 2015. 12. 20. 21:13
    반응형

    데이터베이스를 생성할 때 [ 분석-> 설계-> 구축-> 테스트-> 이행 ]의 프로세스를 거치는데 설계 단계 이후 완성된 데이터 모델을 토대로, 물리적인 테이블을 정해진 DBMS에 맞게 생성하게 된다.

    보통 사용화된 데이터 모델링 툴 을 이용해 모델을 만들고 DDL(Data Definition Language) 을 생성하기 때문에 설계 단계에서 데이터베이스를 생성할 때 PK 컬럼의 순서는 그다지 신경쓰지 않고 생성하게 되는 경우가 많다.


    PK의 순서를 신경쓰지 않은채 테이블을 만들 시 발생할 수 있는 문제

    - 인덱스 구성에서 의도하지 않은 순서의 Primary Key Unique Index가 생성된다

    - 그에 따른 조회 SQL 실행 시 성능 저하 현상이 나타날 수 있다

    - 많은 인덱스가 생성되므로 입력/수정/삭제 시 불필요한 내무 작업이 증가해 성능에 악 영향을 끼친다.


    인덱스의 정렬 구조를 고려, SQL을 설계

    WHERE절에 '='이나, 'Between', '<','>' 등을 분석하여 PK 컬럼을 범위가 들어오는 조건부터 앞쪽으로 위치 시킴


    이미 만들어지느 PK인덱스가 전혀 사용되지 않는다면 입력, 수정, 삭제시 불필요한 인덱스로 인해 성능이 더 저하되어 좋지 않음

    최적화된 인덱스 생성을 위해서는 PK 순서 변경을 통해서 인덱스를 생성하는 것이 바람직함

    설계 단계를 마치기 전 데이터 모델링을 수행할 때 PK 컬럼 순서를 반드시 검토하여 조정해야 한다


    데이터 모델의 OK 순서가 아무런 의미가 없는 것 같지만, 실전 프로젝트에서는 의미 없는 PK 순서 떄무에 성능이 저하되는 경우가 아주 빈번하게 발생한다.

    성능 저하 현상이 일어난 원인이 PK가 여러 개의 속성으로 구성도니 복합식별자일 떄 PK 순서에 대해 별로 고려하지 않고 데이터 모델링을 했기 때문인 경우가 많다.


    인덱스는 가급적이면 '=' 로 접근 하는게 좋으며

    혹시 범위( between 이나 <, > )를 사용하게 될 경우엔 최소한의 범위를 사용하는게 좋다.

    반응형

    댓글

Designed by Tistory.