- 인덱스 컬럼은 비교되기 전에 변형이 일어나면 인덱스를 사용할 수 없다. 인덱스는 가공되기 전에 값으로 생성되어 있지 가공된 후의 값을 가지고 있지않다. - 부정형으로 조건을 기술한 경우에도 인덱스를 사용하지 않는다. - 인덱스 컬럼이 null 로 비교되면 사용할 수 없다.
결합인덱스 - 첫번째 컬럼이 검색되지 않으면 소용없다. - 첫번째 컬럼이 '='으로 검색되어야 한다. between이나 like 로 검색되면 효율이 떨어진다.
개발시 인덱스 추출 요령
1. 반복 수행되는 액세스 형태를 찾는다. - 기본키, 외부키, 서브쿼리시 연결고리가 되는 컬럼
2. 분포도가 아주 양호한 컬럼들을 발췌하여 액세스 유형을 조사한다.
3. 자주 넓은 범위의 조건이 부여되는 경우를 찾는다. - 분포도는 좋으나 자주 'LIKE'나 'BETWEEN"으로 사용하게 되면 분포도가 넓어질 것이다. 처리방식에 따른 최대범위별 최대크기(최대 row 의 수), 자주 사용되는 정렬의 순서, 처리유형(order by , group by) 등을 같이 표시
4. 조건에 자주 사용되는 주요 컬럼들을 추출하여 액세스 유형을 조사한다.
5. 자주 결합되어 사용되는 컬럼들의 조합형태 및 정렬순서를 조사한다. - 혼자 사용되는 컬럼중에서 그 컬럼이 여러개의 컬럼과 같이 쓰인다면 그중에서도 우선순위를 정한다. (어떤 컬럼과 더 자주 같이 사용되는지를 표시- 결합도를 확실히 한다) - 결합조건(operator)을 같이 표시한다. '=' 인지, 'LIKE' 인지를 표시한다. - 정렬순서를 같이 표시한다. (group by, order by 를 표시한다.)
6. 역순으로 정렬하여 추출되는 경우를 찾는다. - 이러한 경우는 어떤 방법을 써도 빠른 응답을 기대할 수 없는데, 오직 하나의 방법은 힌트를 이용해 인덱스를 역순으로 액세스하여 인덱스를 구성하는 것이다.
인덱스
인덱스가 사용되지 않는 경우
- 인덱스 컬럼은 비교되기 전에 변형이 일어나면 인덱스를 사용할 수 없다.
인덱스는 가공되기 전에 값으로 생성되어 있지 가공된 후의 값을 가지고 있지않다.
- 부정형으로 조건을 기술한 경우에도 인덱스를 사용하지 않는다.
- 인덱스 컬럼이 null 로 비교되면 사용할 수 없다.
결합인덱스
- 첫번째 컬럼이 검색되지 않으면 소용없다.
- 첫번째 컬럼이 '='으로 검색되어야 한다.
between이나 like 로 검색되면 효율이 떨어진다.
개발시 인덱스 추출 요령
1. 반복 수행되는 액세스 형태를 찾는다.
- 기본키, 외부키, 서브쿼리시 연결고리가 되는 컬럼
2. 분포도가 아주 양호한 컬럼들을 발췌하여 액세스 유형을 조사한다.
3. 자주 넓은 범위의 조건이 부여되는 경우를 찾는다.
- 분포도는 좋으나 자주 'LIKE'나 'BETWEEN"으로 사용하게 되면 분포도가 넓어질 것이다.
처리방식에 따른 최대범위별 최대크기(최대 row 의 수), 자주 사용되는 정렬의 순서,
처리유형(order by , group by) 등을 같이 표시
4. 조건에 자주 사용되는 주요 컬럼들을 추출하여 액세스 유형을 조사한다.
5. 자주 결합되어 사용되는 컬럼들의 조합형태 및 정렬순서를 조사한다.
- 혼자 사용되는 컬럼중에서 그 컬럼이 여러개의 컬럼과 같이 쓰인다면 그중에서도 우선순위를 정한다.
(어떤 컬럼과 더 자주 같이 사용되는지를 표시- 결합도를 확실히 한다)
- 결합조건(operator)을 같이 표시한다. '=' 인지, 'LIKE' 인지를 표시한다.
- 정렬순서를 같이 표시한다. (group by, order by 를 표시한다.)
6. 역순으로 정렬하여 추출되는 경우를 찾는다.
- 이러한 경우는 어떤 방법을 써도 빠른 응답을 기대할 수 없는데, 오직 하나의 방법은
힌트를 이용해 인덱스를 역순으로 액세스하여 인덱스를 구성하는 것이다.
7. 일련번호를 부여하는 경우를 찾는다.
8. 통계자료 추출을 위한 액세스 유형을 조사한다.
'SQL > 공부' 카테고리의 다른 글