INDEX

이정우·2023년 1월 31일
0

Index는 데이터의 INSERT, UPDATE, DELETE의 성능을 희생하는 대신 데이터의 읽기 속도를 높이는 자료구조이다.

왜 사용할까?

왜? 뭐 때문에? 라는 생각이 든다면, 우선 기본적인 SELECT문의 동작방식을 생각해봐야한다.
일반적인 SELECT문을 실행 시켰을때는 해당조건이 맞는 데이터를 찾을때까지 처음부터 시작해서 촤라락 훑는다.
물론 데이터베이스 크기가 작다면 이용하는데 아무 문제가 없겠지만, 규모가 큰 데이터베이스라면, 한번 조회하는데 몇분이 걸릴수 있다.
이럴때 Index를 이용한다면, 몇분 걸리던 쿼리문을 1초도 안걸리게끔 할 수 있다.

어떻게?

index가 동작하는 방식은 우리가 정렬되어 있는 사전에서 단어를 찾는 원리와 유사하다.

예를들어, 사전에서 '하얗다' 라는 단어를 찾을때 ㄱ부터 시작하는 사전을 처음부터 훑어서 ㅎ구간에 도착해서 단어가 나올때까지 훑는게 아니라,
처음부터 ㅎ구간으로 이동한뒤 거기서 단어를 찾는것이다.

즉, index를 추가한다는것은 구간을 만드는것과 비슷하다.

주의점

오 그러면 인덱스를 엄청 만들어서 데이터베이스를 사용하면 장땡이네

라고 생각하면 큰일난다.

좀 더 생각해보면 Index 또한 데이터이며, 맨 처음에 말했듯이 INSERT, UPDATE, DELETE 같은 변경 쿼리의 성능을 희생하기 때문에 변경쿼리가 많은 곳에 인덱스를 추가하는것은 오히려 비효율적이게 된다.
따라서 Index를 사용할때는 어떻게 하면 최대한 효율적으로 사용할수 있을지,
Index를 사용할만한 적절한 상황인지, 계속해서 고민하면서 설계를 해야한다.

0개의 댓글