본문 바로가기
데이터베이스 DB

SQL Indexing은 왜 필요할까? 어떻게 빨라지는 걸까?

by tovantablack 2024. 12. 16.
728x90
728x90

 

Root

 

 

 

Branch

 

 

 

Leaf 

 

인덱싱은 포인터 구조랑 비슷함.

테이블 풀스캔을 하지 않고도 리프 블럭에서 갖고 있는 주소를 참조해서 데이터를 찾아낼 수 있기 때문에 빨라짐.

왼쪽부터 3번째 애가 sequential access, 4번째 애는 random access

 

sequential access와 random access는 각 쓰임이 달라서, 상황에 맞게 해야한다. 풀스캔이 무조건 안 좋은 건 아님. 최종적으로 출력될 데이터가 테이블 데이터의 10~15% 이상이면 성능상으로 풀스캔이 나음.

 

옵티마이저가 늘상 정확한 계획을 수립하는 건 아니기 때문에 풀스캔하는,, 성능이 오히려 안 좋게 하는 경우로 보인다면 힌트를 넣어서 실행계획을 수정해주는 것이 좋음. 하지만 풀스캔이라고 해서 무조건 힌트 넣으면 안됨. 위와 같은 경우 때문에..

 

인덱스를 걸어놓고 대량의 마이그레이션을 하면 어어어엄청 오래 걸림. 이럴 때는 인덱스를 잠깐 삭제하고 마이그레이션을 해야 함. 만들 때 나한테만 좋게 하면 안되고 인덱스를 만들 때는 이 테이블을 참조하는 모든 sql을 확인하고 인덱스를 만들어야 함

 

 

728x90
728x90

댓글