Index의 개념
- 인덱스는 데이터를 찾을 때 빨리 찾기 위해서 사용한다.
- 인덱스가 없다면 특정한 값을 찾기 위해 모든 데이터 페이지를 다 뒤져야 한다. 이것을 table scan이라고 한다. 인덱스가 찾고자 하는 컬럼이나 표현식에 대해 존재하지 않고, 인덱스를 사용하는 것이 더 효과적이라면 sql 서버는 모든 페이지를 뒤지지 않고 인덱스 페이지를 찾아서 쉽게 데이터를 가져온다.
이걸 index seek이라고 한다.
인덱스의 단점
- 만드는데 시간이 걸린다.
- 만드는데 많은 공간이 필요하고 만들고 난를 후에도 추가적인 공간이 필요하다.
- 데이터를 수정하는 시간, 특히 insert 작업은 오히려 더 많이 걸린다.
클러스터 인덱스
- 테이블 마다 한 개의 클러스터 인덱스가 존재한다.
- 물리적인 행의 순서가 인덱스의 순서와 동일하다
- 인덱스의 맨 마지막 단계인 리프 레벨이 곧 데이터 페이지 이다.
- 클러스터 인덱스는 실제 데이터의 순서와 인덱스의 순서가 일치하기 때문에 일정한 범위를 주고 찾는 경우 속도 향상에 도움이 된다. 또 넌 클러스터 색인에 비해 색인의 단계가 한 단계 적기 때문에 색인의 크기도 작고 그만큼 빨리 찾을 수 있다.
- 반면 새로운 데이터가 입력되면 항상 물리적 순서를 색인의 순서에 맞추어야 하기 때문에 많은 데이터가 자신의 자리를 찾는 작업을 해야 하므로 이부분에서는 오히려 넌 클러스터 인덱스보다 느리다.
넌클러스터인덱스
- 물리적인 행의 순서가 색인의 순서와 동일하지 않다.
- 리프 레벨은 데이터페이지가 아니다.
- 리프 레벨에서 한 단계 더 내려가야만 데이터 페이지이다.
- 따라서 클러스터 색인보다 한 단계를 더 거쳐야 실제 찾고자 하는 데이터에 도달할 수 있다.
출처ㅋ
http://beatz.tistory.com/entry/sql-%ED%8A%9C%EB%8B%9D-%EA%B0%80%EC%9D%B4%EB%93%9C-1-%EC%9D%B8%EB%8D%B1%EC%8A%A4%EB%9E%80-%EB%AC%B4%EC%97%87%EC%9D%B8%EA%B0%80
'프로그래밍 > DB & Redis' 카테고리의 다른 글
[mysql] 이벤트 스케쥴 확인 (0) | 2018.11.25 |
---|---|
[mysql] 날짜 관련 쿼리. (0) | 2017.01.13 |
스키마 (0) | 2016.12.15 |
shrinkfile (0) | 2016.08.22 |
sp_lock 확인과 처리 방법. (0) | 2016.08.08 |
댓글