인덱스

pepe·2025년 11월 14일
  1. InnoDB에서 primary key 인덱스는 클러스터드 인덱스로 만들어진다. 그리고 클러스터드 인덱스는 리프노드(B+Tree)에 실제 테이블의 데이터가 들어있다.
  2. B+Tree구조에서 리프노드의 데이터들은 서로 양방향 리스트로 연결되어있다.
  3. secondary index도 B+Tree를 쓰지만 실제 데이터가 아니라 그냥 secondary key | pk만 들어있다.
  4. 이 점들 때문에 pk를 작게 유지하는게 좋다. (인덱스의 크기가 커지기때문)
  5. InnoDB에서 pk 기반 join이 가장 빠른이유는 mysql은 pk기준 클러스터드 인덱스로 바로 실제 테이블의 데이터를 찾기 때문
    1. JOIN 조건에 맞는 값(=user_id)을 Secondary Index 또는 PK Index에서 찾고
    2. 해당 PK로 실제 데이터 레코드를 읽는다.
    3. 1, 2 의 과정에서 pk가 클러스터드 인덱스를 타게 되면 secondary index -> pk값 -> pk인덱스의 과정을 건너뛸 수 있기 때문이다.
profile
pepe

0개의 댓글