인덱스

1 분 소요

인덱스 컬럼 선정 가이드

조건절에 자주 등장하는 컬럼

조건절의 비교 대상으로 자주 등장하는 컬럼이라면 일단 인덱스 생성을 컴토해야 하고, 조건을 만족하는 값이 전체 데이터의 15~20% 이내라면 인덱스를 생성하는 것이 좋다.

결합 인덱스

조건절에서 비교해야 하는 컬럼이 여러개 이고, 그 중 하나의 컬럼으로 인덱스를 만드는 것만으로는 효과가 미미하다면 여러 컬럼을 조합하여 만드는 인덱스를 결합 인덱스라고 한다.

결합인덱스를 구성하는 컬럼의 순서는 성능을 크게 좌우하므로, 컬럼 순서를 정하는 우선순위를 알아보도록 하자.

  1. 조건절에 항상 사용되는 컬럼

    결합 인덱스의 첫 번째 컬럼이 조건절에서 사용되지 않으면, 이 인덱스가 활용될 가능성은 줄어든다. 조건 절에서 사용된 컬럼이 결합 인덱스의 선두 컬럼으로 구성되어 있어야 성능 검색에 유리하다. 하지만 조건에서 사용된다고 하더라도 이미 다른 컬럼을 통해 걸러진 조건을 포함하는 컬럼이라면, 결합 인덱스의 구성에서 제외시키는 것이 좋다.(성별 컬럼과 주민등록번호값에 이미 성벌에 대한 정보를 포함)

  2. 항상 ‘=’ 로 비교되는 컬럼

    조건절에서 사용되는 컬럼 가운데 ‘=’ 로 비교되는 컬럼을 선두에 두고 결합 인덱스를 생성하는 것이 좋다. 이때 간과하지 말아야 할 저은, 내부적으로 ‘=’로 처리되는 연산들이 있다는 것이다. 예를 들어 IN이나 OR와 같은 경우 내부적으로 ‘=’ 연산을 수행하므로, 이와 같은 표현식을 사용하여 비교하는 컬럼들에 대해서도 결합 인덱스 생성 여부를 고려해야 한다.

  3. 분포도가 좋은 컬럼을 선두에 위치

    위에서 이야기한 두 가지 조건을 만족하는 컬럼이 없다면, 분포도가 좋은 컬럼을 선두에 두면 처리해야 할 대상을 초기에 줄여주므로 검생 성능을 향상시킬 수 있다.

  4. ORDER BY 절에서 자주 사용하는 정렬 순서로 컬럼 순서 지정

태그:

카테고리:

업데이트:

댓글남기기