Clustered Index vs Non Clustered Index, 근데 Postgres 에서는?

태그
데이터베이스
키워드
Clustered Index
Non Clustered Index
 

노트

  • Clustered Index
    • 군집화된 인덱스
    • 데이터의 직접적인 위치를 가리키는 인덱스
    • Clustered Index에 따라 저장하는 순서가 정해진다.
    • Clustered Index는 테이블당 하나만 존재한다.
    • 가장 대표적인 예시로 PK 인덱스를 설정하는 경우를 생각해보자
      • Clustered Index로 설정
    • MySQL (Inno DB) 에서는 기본적으로 테이블이 Clustered Index 구조로 생성이 된다.
      • 추가적인 저장공간을 필요로 하지 않는다.
  • Non Clustered Index
    • 군집화되지 않은 인덱스
    • 테이블당 여러개 생성될 수 있다.
    • 테이블에 PK를 제외한 나머지 칼럼에 인덱스를 거는 경우를 생각해보자
      • 인덱스는 각 데이터를 가리키고 있다
      • 정렬순서는 인덱스의 설정에 맞게 정렬된다.
    • Non Clustered Index로 접근하는 경우 해당 인덱스가 가리키는 값이 아닌 값을 가저오기 위해서는 해당 칼럼이 존재하는 데이터에 직접 접근해야한다.
    • 위의
  • 유의할점이 있는데, Clustered Index 와 Non Clustered Index는 MySQL에서만 유효한 개념이다. Postgres에서는 Clustered Index 라는 개념이 없다. 대신 Clustered Table이라는 개념이 있다.
  • Cluster 명령어릉 통해 테이블의 정렬을 Clustered Table 상태로 바꾸는 것이 가능하다.

요약

📌
요약: Clustered Index 는 테이블 전체에 대해 하나만 존재하는 데이터의 저장 위치를 결정하는 인덱스, Non Clustered Index는 일반적으로 사용하는 데이터의 색인을 정렬하고 가져올 때는 실제 데이터 위치에 접근하는 인덱스