안녕하세요 신입개발자입니다.
회사에서 공부하면서 궁금한 게 생겼는데요,
일을 하다보면 쿼리에 인덱스를 태우네 마네.. 이소리 정말 많이 듣습니다.
인덱스는 쿼리속도를 향상시키기 위해 사용한다고 알고 있는데요,
이 인덱스는 기본적으로 key값은 기본적으로 해당 key 컬럼에 대한 인덱스가 생성이 되고,
나머지는 수동으로 만들어 줘야 한다고 알고 있습니다.
예를 들어 A table의 key값이 name이고, 이 name에 대한 인덱스가 만들어졌다면..
해당 테이블을 select로 조회할 때, 인덱스를 태운다 라는건
select문에서 name을 조회한다는 뜻인가요??
그리고 인덱스를 태웠는지 안태웠는지 확인할 수 있는 방법이 있나요?
제가 index에 대해 전혀 이해를 못 하고 있는 것 같은데 도움 부탁드립니다.
개념을 이해하기 쉽게
Key값을 name으로 이야기 했으니 비슷한 예로 설명 드리자면
학창시절 생활기록부 파일철이 있다고 했을때 맨앞장에 간략히 목차란게 있으면 찾기 훨씬 수월할겁니다.
이름1 2페이지 || 이름2 3페이지
이름3 104페이지 || 이름5 500페이지
인덱스란 이렇게 Key값과 맵핑되는 DataBlock정보를 가지고 있다고 보시면 됩니다.
1. 인덱스를 태운다는건 :
인덱스가 index (name) 으로 생성되었을 경우
select ~ from table where name = '홍길동'; (탐)
select ~ from table where id = 'hong0909'; (안탐)
* 목차를 보고 찾는다는 것
인덱스가 안탄다는건
* 목차를 안보고 1페이지부터 500페이지 까지 한장한장 확인하는것이라 생각하면 됩니다.
무조건이라 단정할순 없지만 테이블 데이터의 10%? 미만의 데이터를 조회시에는 인덱스를 타는게
빠릅니다.
2. 인덱스를 탈지 안탈지는 1)인덱스 생성시 설정한 컬럼정보와, 2)쿼리 실행계획을 보심으로 아실수 있습니다.
열심히 공부하세요~~~~!