블로그 이미지
꿈을 꾸는 꾸러기 YBHoon

카테고리

분류 전체보기 (81)
Oracle (71)
운영체제 (7)
ETC (0)
Study (3)
Total
Today
Yesterday

달력

« » 2025.5
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31

공지사항

태그목록

최근에 올라온 글

Index

Oracle/SQL & PL/SQL / 2010. 2. 18. 11:45


- index = 주소록 (보조 기억장치에 데이터가 위치한 곳을 정리해 놓은 데이터의 주소록)

- 데이터를 관리하기 위한 목적으로 index를 만듦 (SQL 처리가 빨라지는 것은 부수적인 이득)

- where 조건절에 나오는 컬럼을 위주로 index를 작성한다.

- index를 생성하기 위해 먼저 시스템이 데이터 보호를 위해 lock을 하고 full scan을 한다.
이 때, 시스템에 부하가 높아지므로 데이터를 활용하지 않는 시간에 index를 작성하는게 바람직하다.

- index를 생성하는 과정 ; lock -> full scan -> sort -> block 기록 -> unlock

- 데이터 삽입시 index split으로 DML의 속도 저하
데이터의 추가시에 index도 업데이트를 해야 하며 이 과정에 index split이 발생
따라서 index가 많을 경우, 데이터 변경시에 index 업데이트로 인해 시스템에 부하가 많아짐
 
- 데이터 삭제시 테이블의 데이터는 지워지지만 index에는 데이터가 지워지지 않고
사용하지 않는 데이터로 표시되어 그대로 남아서 성능이 저하됨 => index rebuild를 해서 정리해줘야함

- index는 검색된 데이터의 블록이 많더라도 한번에 한 블록씩만 메모리로 불러들인다.
=> 총 데이터의 5% 미만일 경우에만 index의 성능이 좋다.

- index를 이용할 때, 보조 기억장치에서 한번에 읽어들이는 데이터의 양보다
데이터의 블록을 읽어들이기 위해 보조 기억장치를 액세스하는 횟수가 쿼리의 성능을 좌우한다.

- 따라서 전체 데이터 블록의 5% 이상의 횟수로 보조 기억장치의 블록을 액세스할 경우,
오라클의 optimizer는 인덱스를 사용하는 것이 비효율적이라고 판단하여 바로 보조기억장치를 검색함

- unique index는 내용이 중복되지 않으므로 사용하기 좋음 ; unique한 컬럼만 unique index로 지정할 수 있음

- 결합 index의 배합에 따라 index의 성능이 좌우됨

- descending index는 내림차순으로 정리함 ; max함수나 최근의 내용을 우선으로 검색할 때 좋음 (큰 값, 날짜별)

- index가 설정된 상태에서는 where로 검색할 때 index가 된 컬럼에 다른 함수는 지정하지 않는다.
대신 함수를 지정해야할 경우에는 함수 기반 인덱스를 지정한다.

'Oracle > SQL & PL/SQL' 카테고리의 다른 글

Subquery  (0) 2010.04.06
View  (0) 2010.02.18
데이터 무결성 제약조건  (0) 2010.02.17
DDL  (0) 2010.02.17
DML  (0) 2010.02.12
Posted by YBHoon
, |

최근에 달린 댓글

최근에 받은 트랙백

글 보관함