-
DATABASE 13장_연습문제oracle/13장_인덱스 2022. 12. 12. 12:04
문제1] 인덱스의 개념과 필요성을 간략하게 정리하시오.
데이터베이스 분야에 있어서 테이블에 대한 동작의 속도를 높여주는 자료 구조를 일컫는다. 인덱스는 테이블 내의 1개의 컬럼, 혹은 여러 개의 컬럼을 이용하여 생성될 수 있다.
인덱스는 SQL 명령문의 처리 속도를 향상시키기 위해 칼럼에 대해 생성하는 객체이다.
인덱스는 포인트를 이용하여 테이블에 저장된 데이터를 랜덤 액세스하기 위한 목적으로 사용한다.
문제2] 인덱스의 종류를 간략하게 정리하시오.
- 인덱스 칼럼 값의 중복 여부에 따라 고유 인덱스와 비고유 인덱스
- 칼럼의 결합 여부에 따라 단일 인덱스, 결합 인덱스
- 연산자 또는 함수의 적용 결과에 의해 생성되는 인덱스 (함수 기반 인덱스)
문제3] 12장에서 생성한 MEMBER/BOARD테이블에 아래의 제시한 인덱스를 생성하시오.
1) MEMBER 테이블의 REGDATE칼럼에 대해 인덱스를 생성하시오.
CREATE INDEX idx_member_regdata ON member(regdata);
2) BOARD 테이블의 USERID 칼럼에 대해 인덱스를 생성하시오.
CREATE INDEX idx_board_userid ON board(userid);
3) MEMBER 테이블의 INTEREST와 USERNAME칼럼에 대해 결합 인덱스를 생성하시오.
CREATE INDEX idx_member_int_userid ON member(interest, userid);
4) MEMBER 테이블의 USERID칼럼에 대해 UPPER()함수를 적용한 함수기반 인덱스를
생성하시오
CREATE INDEX upper_member_userid ON member(upper(userid));
member 인덱스 3개가 생성 board 인덱스 문제4] 3번에 생성한 인덱스를 재구성하시오.
alter index idx_member_regdata rebuild; alter index idx_board_userid rebuild; alter index idx_member_int_userid rebuild; alter index upper_member_userid rebuild;
문제5] 3번에 생성한 인덱스에 대한 정보를 데이터 딕셔너리 뷰를 통해 조회하시오.
-확인결과)
INDEX_NAME TABLE_NAME
--------------------------------------------
IDX_BOARD_USERID BOARD
IDX_MEMBER_USERID_UPPER MEMBER
IDX_MEMBER_INTEREST_USERNAME MEMBER
IDX_MEMBER_REGDATE MEMBER
select index_name, table_name from SYS.USER_INDEXES where table_name ='MEMBER' or table_name='BOARD';
INDEX_NAME TABLE_NAME COLUMN_NAME
---------------------------------------------------------------
IDX_BOARD_USERID BOARD USERID
IDX_MEMBER_REGDATE MEMBER REGDATE
IDX_MEMBER_INTEREST_USERNAME MEMBER INTEREST
IDX_MEMBER_INTEREST_USERNAME MEMBER USERNAME
IDX_MEMBER_USERID_UPPER MEMBER SYS_NC00010$
select index_name, table_name, column_name from USER_IND_COLUMNS where table_name ='MEMBER' or table_name='BOARD';