index

기혁·2023년 2월 15일
0

DBMS 학습

목록 보기
13/13

📌 index란

  • 조회속도를 향상시키기 위한 데이터베이스 검색 기술
  • 색인이란 뜻으로 해당 테이블의 조회 결과를 빠르게 하기 위해 사용

📌 index 원리

  • index를 테이블의 특정 컬럼에 한개 이상 주게 되면
    index table이 따로 만들어 지고, 인덱스 컬럼의 로우값과
    rowid값이 저장되며 로우값은 정렬된 트리 구조로 저장시켜
    두었따가 검색시 좀 더 빠르게 해당 데이터를 찾는데 도움을 준다.
  • 하지만 DML 명령을 사용할때는 원본 table 물론 index table에도
    데이터를 갱신시켜 주어야 하기 때문에 update, insert, delete 명령을
    쓸때 속도가 느려진다는 단점이 있다.

📌 index 생성이 불필요한 경우

  • 데이터가 적은 경우에는 인덱스를 설정하지 않는게 오히려 성능에 좋다.
  • 조회보다 삽입, 수정, 삭제 처리가 많은 테이블

📌 DML 명령어를 이용했을 경우 취약점

  • insert : 두 개의 테이블에 동시 insert
  • delete : 인덱스에서는 데이터를 사용하지 않음으로 표시하고
    지우지 않는다.
  • update : 인덱스에는 delete 한 후 새로운 데이터를 insert 작업함

📌 index 생성

💡 unique index

: 인덱스를 사용한 컬럼의 중복값들을 포함하지 않고 사용할 수 있는
장점이 있다.

	create unique index 인덱스명
	on 테이블명(컬럼);

💡 non-unique index

: 인덱스를 사용한 컬럼에 중복 데이터 값을 가질 수 있다.

	create index 인덱스명
	on 테이블명(컬럼);

예시

CREATE TABLE EMPLOYEES3 AS SELECT * FROM EMPLOYEES e ; -- 테이블 만들기

SELECT *
FROM EMPLOYEES3 e 
ORDER BY EMPLOYEE_ID  -- 출력 확인용
;

INSERT INTO EMPLOYEES3 (employee_id, FIRST_NAME , LAST_NAME)
VALUES 	(502, 'Ismeal', 'Chen'); 				-- 값 넣기

-- unique index 생성
CREATE UNIQUE INDEX inx_employee3_id
ON EMPLOYEES3(employee_id); -- employee_id는 유니크 걸려있어서 100의 숫자는 하나만 가능


-- DELETE FROM EMPLOYEES3 e -- 삭제 구문
DELETE FROM EMPLOYEES3 e 
WHERE FIRST_NAME = 'Ismeal'
AND	  LAST_NAME = 'Chen'
;

-- index 생성

CREATE INDEX inx_employee3_first -- Ismeal를 여러번 데이터를 삽입 가능
ON EMPLOYEES3(first_name);
profile
⭐️내가만든쿠키⭐️

0개의 댓글