자주 질문 대상에 오르는 DB 인덱싱에 대해서 정리를 해보려고 한다.
구글이 있어서 행복한 하루!
1) 인덱스는 테이블에 대한 검색의 속도를 높여주는 자료 구조이다.
2) 색인이며, 메모리 영역의 일종의 목차를 생성하는 개념이다.
3) 이런 목차를 이용해서 검색 범위를 줄이고, 속도를 높일 수 있다.
1) Balanced-Tree Index
2) Bitmap Index
3) IOT Index
4) Clustered Index
등이 있다.
1) 테이블을 생성 시 생성하고 싶은 인덱스 컬럼을 지정한다.
2) 생성 후 인덱스 조회 시 WHERE 절이 포함된 쿼리로 조회한다.
3) 인덱스로 저장된 KEY-VALUE 값을 참조해서 결과를 출력한다.
검색, 조회 시에는 효율적이나, 추가, 수정, 삭제시에는 성능 저하가 되므로 조심해야 한다.
WHERE 절에 사용할 때 성능을 향상시키는 것이라, 잘 생각해보고 만들어야 하는데,
1) 유니크한 값이 많을 때 (Cardinality)
2) 선택도가 낮을 때 (Selectivity)
3) 활용도가 높을 때
4) 중복도가 없을 때 (낮으면 좋음)
문법은 이러하다.
Create INDEX 인덱스명 ON 테이블명 (필드명, 필드명, 필드명 ... );
실무에서는 보통은 조회 시에 원본 테이블 전체를 검색하지 않고,
인덱스를 조회해서 탐색 시간을 줄이기 위해 사용했었다.
참조 : https://velog.io/@bsjp400/Database-DB-%EC%9D%B8%EB%8D%B1%EC%8B%B1Indexing%EC%9D%B4%EB%9E%80
https://yurimkoo.github.io/db/2020/03/14/db-index.html
댓글
댓글 쓰기