1. 뷰(view)
1-1. 뷰란?
- 하나의 가상 테이블이라고 생각하면 된다.
- 작업을 하다보면 자주 조회하는 데이터들이 있다. 한 테이블에 데이터가 있으면 조회하기 편하겠지만 그렇지 않은 경우가 있다. 이런 경우 여러 테이블을 join 사용하여 가져오고 쿼리가 복잡한 경우도 있다.
- 이런 경우 쿼리로 뷰를 만들어 놓고 사용하면 편리하다.
- 뷰는 보안에도 유리하다. 테이블에 데이터를 노출시키고 싶지 않을때, 뷰를 사용하여 보여줄 데이터만 뷰로 제공할 수 있다. (ex. 다른 업체에 DB데이터 조회 권한을 주었을 때, 테이블의 특정 데이터의 노출 방지)
1-2. 뷰의 특징
- view는 table과 유사하며, 테이블처럼 사용가능
- 테이블과는 달리 데이터를 저장하기 위한 물리적인 공간이 필요하지 않은 가상 테이블이다.
- 데이터를 물리적으로 갖지 않지만 논리적인 집합을 갖는다.
- 테이블과 마찬가지로 select, insert, update, delete 명령이 가능하다.
2. index
2-1. 인덱스란?
- 조회속도를 향상시키기 위한 데이터 베이스 검색 기술
- 색인이라는 뜻으로 해당 테이블의 조회결과를 빠르게 하기 위해 사용
- 인덱스가 필요한 이유는 인텍스를 생성해줌으로써 조회속도를 빠르게 할 수 있다.
2-2. 인덱스 생성 원리
- 인덱스를 테이블의 특정 컬럼에 한 개 이상 주게 되면 인덱스 테이블이 따로 만들어 진다.
- 인덱스 컬럼의 row값과 rowid값이 저장되며, row값은 정렬된 트리 구조로 저장시켜 두었다가 검색시 좀 더 빠르게 해당 데이터를 찾는데 도움을 준다.
(rowid : 테이블을 생성하고 컬럼을 만든 후 데이터를 삽입하면 하나의 row가 생성되면 이 row는 절대적인 주소를 가지게 되는데 이를 rowid라고 한다.)
- DML명령을 사용할 때는 원본 Table은 물론 Index Table에도 데이터를 갱신시켜 주어야 하기 때문에 update, insert, delete명령어를 쓸 때 속도가 느려진다는 단점이 있다.
2-3. 반대로 index 생성이 불필요한 경우?
- 데이터가 적은(수천건 미만) 경우에는 인덱스를 설정하지 않는게 오히려 성능이 좋다.
- 조회보다는 삽입, 수정, 삭제 처리가 많은 테이블
2-4. DML 구문과 index
- insert : 인덱스 split 현상으로 부하가 걸린다.
- delete : 인덱스에서는 데이터를 사용하지 않음으로 표시하고 지우지 않는다.
- update : 인덱스에서는 delete를 한 후, 새로운 데이터를 insert 작업을 함
2-5. index 생성 방법
create unique index 인덱스명
on 테이블명(컬럼);
create index 인덱스명
on 테이블명(컬럼);