본문 바로가기

JAVA 공책/=> 다시 정리

Database에서의 Inline view & Rownum & Sequence & Index & Synonym

Inline view

인라인 뷰는 많은 양의 데이터가 있을 때 일정한 개수 단위로 데이터를 가져오기 위해서 실행하는 명령입니다.

Top-N(상위 몇개) 이라고도 하고 Paging(일정한 개수 단위)과도 같은 말입니다.

인라인 뷰는 일정한 개수 단위로 자르기 위해서 필터링을 하게 되는데, 오라클에서의 필터링은 from 절(테이블을 가져오면서)에서 할 수 있기 때문에 미리 필터링을 한 뒤에 일정 개수 단위로 잘라서 가져옵니다.

오라클의 이러한 방식은 데이터가 많이 생기는 경우, 예를 들어 두 테이블을 join하게 되면 모든 cross join이 되면서 많은 양의 데이터가 만들어지는데 이 경우 데이터가 많으면 많을 수록 시간이 오래 걸립니다. 이 때 오라클의 from절에서 미리 필터링을 한 뒤에 테이블을 합치게 되면 시간이 훨씬 절약되어 효율적입니다.

from 절에서 필터링이 가능한 이유는 from절에서 서브쿼리[각주:1]를 사용할 수 있기 때문입니다. 서브쿼리로 테이블의 규모를 줄입니다.


Rownum

오라클에서는 행번호와 유사한 개념의 rownum이라는 것을 제공하고 모든 테이블에서 사용할 수 있는 컬럼입니다.

rownum의 번호는 from절에서 임시적으로 부여되고 where 절을 만족하면 확정된다는 것을 유의해야 합니다. where 절을 만족해야만 숫자가 부여되므로 숫자가 부여되지 않은 행도 존재하고 where 절을 만족한 행끼리 번호가 연속됩니다.


Sequence

오라클에서 행번호와 유사한 개념의 rownum을 제공하고 있지만 그냥 일련번호를 만들 수 있는 개체도 따로 있습니다. 바로 sequence 라는 개체입니다.

오라클에서는 sequence를 별도의 개체로 제공하고 있어서 하나의 테이블에 여러개의sequence를 사용할 수 있습니다. 하지만 mysql은 별도의 개체가 아니므로 테이블 하나에 하나의 일련번호만 사용할 수 있습니다.


Index

index도 일련번호라고 생각할 수 있지만 index는 일련번호라기 보다는 데이터를 빠르게 검색하기 위한 개체입니다. 북마크 같은 역할을 합니다.

primary key 나 unique는 중복될 수 없으므로 계속해서 중복검사를 하기위해 데이터를 많이 조회하게 되는데, 때문에 이 두 명령어를 사용하게 되면 index가 자동으로 생성됩니다.

인덱스의 장점은 빠르게 조회할 수 있다는 것이지만 처음 만들 때 시간도 걸리고 저장공간도 별도로 추가가 되기 때문에 삽입, 삭제, 수정 작업을 할 시에는 시간을 더 잡아먹습니다. 때문에 삽입, 삭제, 수정 작업이 많은 때에는 적합하지 않습니다.


Synonym

오라클에선 synonym이라는 명령어도 제공합니다. 개체에 별명을 붙이는 것인데, 프로그램과 연동해서 사용할 때 용이 합니다. 별명을 정해서 프로그램과 연동해 두면 후에 데이터 테이블의 이름이 변경되어도 별명만 같다면 프로그램을 고칠 필요가 없습니다.








  1. - sub query: 다른 sql 문장의 절에 포함된 sql 문자 : 괄호 안에 기재해야 하고 main query를 수행하기 전에 1번만 수행합니다. [본문으로]

'JAVA 공책 > => 다시 정리' 카테고리의 다른 글

Parameter  (0) 2018.08.24
Exception Handling(예외처리)  (0) 2018.08.23
인터페이스  (0) 2018.08.22
Trigger  (0) 2018.07.31
Oracle의 프로그래밍 PL/SQL & Procedure  (0) 2018.07.31