인덱스를 걸면 조회가 빨라진다는 건 알겠는데, 도대체 내부적으로 어떻게 생겨먹었길래 빠른 건지 원리가 궁금해서 질문 올립니다. 대부분 B-tree(비트리)라는 자료구조를 쓴다고 하던데 이게 왜 빠른 건가요.


제가 막연하게 생각하는 건, 인덱스 없으면 테이블을 처음부터 끝까지 다 훑어야 하니까(풀 스캔) 느리고, 인덱스 있으면 정렬돼 있어서 이진 탐색처럼 빨리 찾는다 정도예요. 근데 그냥 정렬된 배열로 이진 탐색 하면 될 걸 왜 굳이 트리 구조를 쓰는 건지 모르겠어요.


예를 들어 이런 조건이면


WHERE age BETWEEN 20 AND 30
ORDER BY age


범위 검색이나 정렬에도 인덱스가 도움이 된다던데, 이게 B-tree 구조랑 무슨 관계가 있는 건가요. 그리고 데이터가 계속 추가되고 삭제돼도 트리가 균형을 유지한다는데 그건 또 어떻게 되는 건지도 궁금하고요. 너무 깊게는 말고 왜 빠른지 원리만 이해하고 싶은데 쉽게 설명해주시면 감사하겠습니다.