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

+ Recent posts