1. INDEX
- 조회 속도를 향상시키기 위한 데이터베이스 검색 기술
- 색인이라는 뜻으로, 인덱스를 생성해 줌으로써 해당 테이블의 조회결과를 빠르게 할 수 있다.
- INDEX를 테이블의 특정 컬럼에 한 개 이상 주게 되면 INDEX TABLE이 따로 만들어지고, 인덱스 컬럼의 로우값과 ROWID 값이 저장되며, 로우값은 정렬된 트리 구조로 저장시켜 두었다가 검색 시 좀 더 빠르게 해당 데이터를 찾는 데 도움을 준다.
참고) ROWID란?
테이블에서 데이터를 입력 하면 하나의 ROW가 생성된다. ORACLE에서는 각각의 데이터마다 ROWID를 가진다. - 하지만 DML 명령을 사용할 때는 원본 테이블은 물론 INDEX 테이블에도 데이터를 같이 갱신해줘야 하기 때문에, UPDATE, INSERT, DELETE 명령을 쓸 때는 속도가 느려진다.
- INDEX 생성이 불필요한 경우
- 데이터가 적은(수천 건 미만) 경우에는 인덱스를 설정하지 않는 것이 오히려 성능이 좋다.
- 조회보다 삽입, 수정, 삭제 처리가 많은 테이블
예제
-- index
CREATE TABLE employees3 AS SELECT * FROM emplyees e;
SELECT * FROM employees3;
SELECT rowid, employee_id
FROM EMPLOYEES3 e
WHERE EMPLOYEE_ID = 200
;
SELECT *
FROM EMPLOYEES3 e
WHERE EMPLOYEE_ID = 100
;
INSERT INTO EMPLOYEES3 (employee_id, FIRST_NAME, LAST_NAME)
VALUES (100, 'User', 'Name');
-- unique index 설정
-- 중복된 값이 있으면 UNIQUE INDEX를 걸 수 없음
create unique index IDX_EMPLOYEES3_ID on EMPLOYEES3(EMPLOYEE_ID);
-- DELETE
--DELETE FROM EMPLOYEES3 e
SELECT * FROM EMPLOYEES3 e
WHERE FIRST_NAME = 'User'
AND LAST_NAME = 'Name'
;
SELECT * FROM EMPLOYEES3 e WHERE EMPLOYEE_ID = 100;
SELECT * FROM EMPLOYEES3 e WHERE FIRST_NAME = 'Michael';
INSERT INTO EMPLOYEES3 (employee_id, FIRST_NAME, LAST_NAME)
values(500, 'Michael', 'Hartstein');
INSERT INTO EMPLOYEES3 (employee_id, FIRST_NAME, LAST_NAME)
values(501, 'Michael', 'Hartstein');
-- index
-- 중복되는 데이터가 있지만 그냥 index이기 때문에 에러가 나지 않는다.
CREATE INDEX idx_employees3_first ON employees3(first_name);
728x90
'이론 > 자바 풀스택 국비수업' 카테고리의 다른 글
220502 HTML2 (0) | 2022.05.27 |
---|---|
220428 HTML1 (0) | 2022.05.24 |
220422 데이터베이스 뷰, 시퀀스 (0) | 2022.05.02 |
220420~21 데이터베이스 컬럼속성 (0) | 2022.05.02 |
220420 데이터베이스 COMMIT, ROLLBACK (0) | 2022.04.28 |