일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 문래동 이웃집돈까스가게
- 와이파이 연결안됨
- JAVA IP
- 순대국
- 문래동맛집
- 월화고기
- RX100M5
- 어도
- 일식
- 문래동 맛집
- 영화
- 곤드레이야기
- 야외갈비
- Pho U
- 큐큐면관
- 스시마루
- 책추천
- 이웃집돈까스
- 허참갈비
- 태릉갈비
- 통신사 와이파이
- 논뚜렁밭뚜렁
- 리필연어
- 김서방 정육식당
- 이자카야류
- 홍대
- IT 연봉
- 아이폰 프로
- 셀카봉추천
- 맛집
- Today
- Total
Oasis' story
인덱스 (INDEX) 본문
* 인덱스 컬럼 설정시 기본적으로 고려해야할 점.
- 해당 컬럼이 광범위한 값이 포함되는가 (데이터 구분을 위한 스펙트럼이 넓은 값의 범위를 갖나 ex.PK)
- 2~4% 미만의 행을 검색하는가 (테이블의 다량 데이터를 검색할 경우, full scan이 I/O를 적게 일으키고 한번에 로딩하는 버퍼가 크므로, 일반적으로 더 빠름)
- where 절에 자주 사용되는가
- 널 값이 많이 포함된 경우
cf) 인덱스를 생성하지 않아야 하는 경우
- 테이블이 작은 경우
- 컬럼이 쿼리에 자주 사용되지 않는 경우
- 대부분의 쿼리가 테이블에 있는 행의 4% 이상을 검색할 경우
- 테이블이 자주 갱신되는 경우(DML 작업이 발생할 때마다, 오라클이 자동으로 인덱스를 갱신하므로 느려짐)
* Primary Key , Unique 제약 조건을 정의할 경우 자동으로 인덱스가 생성되며 유저가 임의로 drop 할 수 없음.
* 인덱스 컬럼과 RowID를 같이 저장하므로 데이터 검색이 빠른 원리다.
* 인덱스 사용시 주의해야 할 점
1. 암시적(implicit)인 데이터 타입 변환이 발생하지 않도록 한다.
ex) number type의 컬럼 A를 where 절에 A = '1' 이런식으로 표현하면 안됨. A=1 (O).
2. 조건절에서 인덱스 컬럼을 변형하지 않는다.
ex) 수식과 함께 사용한다거나 함수의 파라미터로 사용하면 인덱스 사용 안하게 됨.
where salary*2 > 2000 .
where substr(last_name, 1,1) = 'N' -> last_name like 'N%' (O) or 함수기반 인덱스 생성
* 딕셔너리에서 인덱스 조회
select ic.idex_name, ic.column_name, ic.column_position "컬럼순서"
from user_indexes i , user_ind_column ic
where ic.index_name = i.index_name
and ic.table_name ='emp'
ordery by ic.column_name;