ex) 일반 책에서의 목차 개념과 비슷하게 생각할 수 있다.
단일 인덱스 : 인덱스가 한개의 컬럼으로 만 구성되어 있는 인덱스
위 이미지와 같이 한개의 컬럼으로 구성된 인덱스이다.
CREATE INDEX ['인덱스이름'] ON '테이블이름'('컬럼명');
위와 같이 인덱스를 생성하고 사용할수 있습니다.
인덱스를 타는지 혹은 타지 않는지 확인을 하고 싶다면 EXPLAIN 명령어를 통해 쿼리의 실행 계획을 확인할수 있다.
EXPLAIN SELECT * FROM WHERE '인덱스 적용 컬럼' = '값'
위와 같이 인덱스가 정상적으로 작동한다면 위와 같은 결과가 나옵니다.
index는 where절에서 비교전 인덱스에 가공이 일어난다면 타지 않는다. ( 가공하기 전 데이터로 인덱스를 구성하였기 때문)
CREATE INDEX ['인덱스 이름'] ON '테이블이름'('선두컬럼','컬럼')
인덱스를 타는지 혹은 타지 않는지 확인 방법은 위와 같다.
복합인덱스의 경우 선두컬럼이 먼저 조건으로 걸리지 않는다면 인덱스를 타지 않으므로 만들기 전에 충분히
고려를 하고 생성하는것 이 좋다.
EX)
CREATE INDEX IDX_TEST ON TEST(NAME,GENDER,JOB);
위와 같은 복합 인덱스를 생성했다고 가정한다면
SELECT * FROM TEST WHERE GENDER = '남' AND JOB = 'DBA'
와 같이 검색을 진행한다면 선두컬럼 NAME 이 없으므로 인덱스를 타지 않는다 아래의 경우는 인덱스를 타는 경우이다.
SELECT * FROM TEST WHERE NAME = '홍길동' AND JOB = 'DBA';
SELECT * FROM TEST WHERE NAME = '홍길동';
SELECT * FROM TEST WHERE NAME = '홍길동' AND GENDER = '남'
SELECT * FROM TEST WHERE NAME ='홍길동' AND GENDER = '남', AND JOB = 'DBA'
선두컬럼 조건이 반드시 앞에 나와야 한다는 조건이 있다.
위 글에 대하여 잘못된 부분이나 추가로 했으면 좋겠는 부분은 댓글로 남겨주세요!!
출처