✔ View
- View : 관점
- 하나의 테이블 혹은 여러 테이블에 대하여 특정 사용자나 조직의 관점에서 데이터를 바라볼 수 있도록 해주는 수단.
가상 테이블
- 일반 테이블 : 실제로 물리적인 데이터를 가지고 있음.
- View : 물리적인 데이터를 갖지 않고, 이미 정의돈 일반 테이블로부터 데이터를 가져와 출력.
- 필요성
- 필요한 정보를 따로 관리하면 데이터 중복, 불일치 발생.
- 필요에 따라 숨겨야하는 컬럼도 발생.
- View에 대해서도 행 추가, 수정, 삭제가 가능 : 무결성 규칙이 만족하는 경우
◾ View의 목적
- 다양한 관점 : 하나의 테이블에 대하여 서로 다른 관점으로 보기 원하는 경우.
- 보안 유지 : 테이블에서 일반 사용자에게 감추어야할 컬럼이 있을 경우. (해당 컬럼을 제외한 View 제공)
- 재사용 : 자주 사용하는 복잡한 질의문을 미리 View로 만들어 사용.
◾ View 생성
CREATE VIEW view_name
AS
SELECT_QUERY
✔ Index
- Index : 검색 속도 향상시킬 수 있는 수단.
- 책 뒤에 있는 색인과 같은 역할.
- 인덱스는 항상 정렬된 상태 유지 => 빠른 시간에 검색 가능.
- 필요성
- 순차 검색은 데이터가 많고 최악인 경우 오랜 시간 필요.
- 이진 검색일 경우 데이터가 수정될 때마다 정렬을 유지하는 비용 발생.
◾ 인덱스 동작 원리.
- 검색 기준이 되는 컬럼만을 정렬 상태로 유지.
- 인덱스의 각 행은 원래 데이터가 저장되어 있는 테이블에 대응하는 행의 주소 보유.
◽모든 컬럼에 대한 인덱스는 유용한가?
- 바람직하지 않음.
- 인덱스의 저장 공간 차지, 정렬 상태 유지를 위한 비용 발생.
- 인덱스가 많아지면 인덱스 재정렬시 많은 시간 필요 -> DBMS의 성능 저하.
- 꼭 필요한 컬럼에 대해서만 인덱스 적용.
◾ 일반적인 지침
- 주요 적용 대상 : [WHERE절에서 비교 대상, JOIN에 사용되는 컬럼]
- 행의 수가 적으면(200~300개) 인덱스를 지정하여도 효과가 별로 없음.
- 인덱스로 지정한 컬럼에 의해 검색했을 때, 전체 행의 10%~15% 미만일 경우 효과가 있음.
- 결과가 많이 나올 경우 순차 검색이 더 빠를 수 있음.
◾ DBMS 자동 인덱스 : 기본키, UNIQUE
- 클러스터형 인덱스
- 보통 기본키(Primary Key) 컬럼에 자동 생성.
- 검색의 기준이 되는 경우가 많음.
- 행의 중복 여부 확인 작업에 이용하기 위해 사용.
- 내용 자체가 순서대로 정렬되어 있어 인덱스 자체가 데이터의 내용과 동일.
- 보조 인덱스
- 보통 UNIQUE 지정된 컬럼에 자동 생성.
- 인덱스가 별도로 있고, 인덱스의 각 행에 있는 원래 데이터의 행 주소를 이용해 실제 데이터 찾음.
◾ 인덱스 확인
SHOW INDEX FROM 테이블명
: 테이블에 적용된 인덱스 확인.
◾ 인덱스 생성
CREATE INDEX 인덱스명 ON 테이블명(컬럼명)
◾ 인덱스 삭제
ALTER TABLE 테이블명 DROP INDEX 인덱스명