클라이언트/ 서버/ 엔지니어 " 게임 개발자"를 향한 매일의 공부일지

객체 종류 2 - 더 빠른 검색을 위한 인덱스와 시퀀스 그리고 동의어까지 본문

알고리즘 및 자료 관리/데이터베이스

객체 종류 2 - 더 빠른 검색을 위한 인덱스와 시퀀스 그리고 동의어까지

huenuri 2024. 8. 23. 16:41

다음으로는 인덱스와 시퀀스 그리고 동의어에 대해서 학습을 진행하려고 한다. 가능하면 1시간 안에 학습을 끝마치고 다음 일정을 시작해보고 싶다.

인덱스는 수업 시간에 다루지 않았고 시퀀스는 잠깐 소개 정도로 짧게 배웠다. 이 수업은 인사교에 입교했을 때라 DB 마지막 수업을 들을 수 있었다. 그때는 하나도 이해하지 못했지만 지금은 어느 정도 이해가 되어 신기했다.

 

학습 내용

  1. 더 빠른 검색을 위한 인덱스
  2. 규칙에 따라 순번을 생성하는 시퀀스
  3. 공식 별칭을 지정하는 동의어

학습 시간

오후 5시 20분 ~ 6시 반 <1시간 10분 소요>


 

 

 

1. 더 빠른 검색을 위한 인덱스

 

인덱스란?

색인이라는 뜻의 인덱스는 책 내용을 찾는 것과 비슷하다. 오라클 데이터베이스에서 데이터 검색 성능 향상을 위해 테이블 열에 사용하는 객체를 뜻한다. 테이블에 보관된 특정 행 데이터의 주소, 즉 위치 정보를 책 ㅔ이지처럼 목록으로 만들어놓은 것이다. 인덱스는 테이블 열을 여러 가지 분석을 통해 선정하여 설정할 수 있다.
인덱스의 사용 여부에 따라 데이터 검색 방법을 Table Full Scan, Index Scan으로 구분한다. 처음부터 끝까지 검색하여 원하는 데이터를 찾는 방식을 Table Full Scan, 인덱스를 통해 데이터를 찾는 방식은 Index Scan이라고 한다.

인덱스도 오라클 데이터베이스 객체이므로 소유 사용자와 사용 권한이 존재한다.

 

 

SCOTT 계정이 소유한 인덱스 정보 알아보기

EMP 테이블의 EMPNO 열, DEPT 테이블의 DEPTNO 열에 인덱스가 이미 생성되어 있다.

 

 

 

인덱스 생성

오라클 데이터베이스에서 자동으로 생성해주는 인덱스 외에 사용자가 직접 인덱스를 만들 때는 CREATE문을 사용한다. CREATE문에서는 인덱스를 생성할 테이블 및 열을 지정하며 열은 하나 또는 여러 개 지정할 수 있다. 지정한 각 열별로 인덱스 정렬 순서를 정할 수도 있다.

 

SAL 열에 인덱스 생성하고 살펴보기

생성한 인덱스를 불러왔다. 오름차순으로 정렬이 되었다.

 

 

 

인덱스 삭제

DROP 명령어를 사용하여 삭제한다.

인덱스 삭제하고 결과 확인하기

첫번째 행의 인덱스가 삭제되었다. 이 부분도 오늘 정처기 공부할 때 모두 보았던 내용들이다. 인덱스를 만들 때는 CREATE와 ON을 함께 써준다는 것을 꼭 기억하자!


 

 

 

2. 규칙에 따라 순번을 생성하는 시퀀스

시퀀스란?

 

 

 

시퀀스 생성

 

 

 

 

 

 

 

 

 

 

 

 

 

DEPT 테이블을 사용하여 DEPT_SEQUENCE 테이블 생성하기

아직 데이터는 들어있지 않다.

 

 

 

 

 

시퀀스 생성 및 생성한 시퀀스 확인하기

시퀀스가 잘 만들어졌음을 확인할 수 있다.

 

 

 

 

 

시퀀스 사용

생성된 시퀀스를 사용할 때는 다음과 같이 쓰면 된다.

 

 

 

 

시퀀스에서 생성한 순번을 사용한 INSERT문 실행하기

한 행을 삽입하여 시퀀스를 만들었다.

 

 

 

 

 

 

시퀀스에서 생성한 순번을 반복 사용하여 INSERT문 실행하기

4번 반복해서 실행했더니 이렇게 행이 더 추가되었다.

 

 

 

 

 

 

시퀀스 수정

ALTER 명령어로 시퀀스를 수정하고 DROP으로 삭제한다. 인덱스와 비슷하다.

시퀀스 옵션 수정하고 조회하기

최대값 99와 증가값을 3으로 주어 수정해보았다. 이제 수정한 시퀀스 결과를 확인해보자.

 

 

 

 

 

 

수정한 시춴스를 사용하여 INSERT문 실행하기

조금 전에 40까지 시퀀스를 생성했으니 그 다음으로 43번이 들어갔다. 즉 3씩 증가되어 시퀀스 번호가 올라가고 있는 것이다. 최대값을 99라고 했으니 그 이상은 추가되지 않는다.

 

 

 

 

 

 

CYCLE 옵션을 사용해서 시퀀스의 최대값 도달 후 수행결과 확인하기

행을 계속 삽입해도 97이후로는 올라가지 않는 것을 확인했다.

 

 

 

 

 

 

시퀀스 삭제

시퀀스 삭제 후 확인하기

시퀀스가 모두 삭제되었다.


 

 

 

3. 공식 별칭을 지정하는 동의어

동의어란?

테이블 · 뷰 · 시퀀스 등의 객체 이름 대신 사용할 수 있는 다른 이름을 부여하는 객체이다. 주로 테이블 이름이 너무 길어 사용이 불편할 때 좀더 간단하고 짧은 이름을 하나 더 만들어 주기 위해 사용한다.

생성한 동의어는 SELECT, INSERT, UPDATE, DELETE 등 다양한 SQL문에서 사용할 수 있다.

동의어는 테이블 별칭과 유사하지만, 오라클 데이터베이스에 저장되는 객체이기 때문에 일회성이 아니라는 점에서 차기가 난다. 동의어 생성 역시 SYSTEM에 접속하여 동의언 생선 권한을 부여해야 한다.

 

 

 

권한 부여하기

권한이 잘 부여되었다. 이제 권한을 부여하는 것도 잘할 수 있다.

 

 

 

동의어 생성

동의어 생성 권한을 부여했으니 EMP 테이블에 동의어 E를 만들어보자.

EMP 테이블에 동의어 생성하기

 

 

 

E 테이블 전체 내용 조회하기

EMP 테이블을 E라는 이름으로 조회할 수 있게 되었다.

 

 

 

동의어 삭제


 

 

 

학습을 마치고

생각보다 분량이 상당히 많았다. 수업 예제는 따로 권한을 부여해주어야 하니 SCOTT 계정으로만 해보았다. 이 예제만으로도 학습하는데 무리가 없었다. 이렇게 해서 시퀀스를 만들고 수정하고 삭제하는 것, 권한 부여하기, 동의어 사용 등 정말 많은 것들을 배웠다.

이제 방 정리를 하고 잠시 다른 일을 해야 할 것 같다. 다 정리하고 시간이 남으면 그때 연습문제를 풀어봐야지! 공부하는 게 정말 재미있다~