검색 속도가 빨라지고 시스템의 부하를 줄여 성능을 향상시킨다.
다만 인덱스 생성에 시간과 공간이 필요하며 삽입/갱신/삭제가 빈번히 일어나는 경우 성능을 저하시킨다.
그래서 데이터가 많을 경우나 JOIN 이 많이 사용된 경우에 필요하고 데이터가 적거나 수정이 빈번하게 일어나는 경우엔 필요하지 않다.
CREATE UNIQUE INDEX [인덱스 이름] ON [테이블(적용 칼럼)]
중복되지 않은 데이터에 사용하는 인덱스
Primary Key 나 Unique Key 적용시 자동으로 생성된다.
중복되는 데이터가 있는 칼럼에 인덱스를 적용시키려고 하면 에러가 난다.
CREATE INDEX [인덱스 이름] ON [테이블(적용 칼럼)]
중복되는 데이터가 있는 칼럼에 걸 수 있는 인덱스
Foreign Key 생성 시 자동으로 생성된다.
ALTER TABLE [테이블명] DROP INDEX [인덱스 이름]
- 인덱스 삭제
CREATE UNIQUE INDEX [인덱스 이름] ON [테이블(적용 칼럼,...)]
복수의 컬럼을 합쳐서 하나의 인덱스로 만들 수 있다.
최대 결합 컬럼은 16개 이다.
일반 조합 인덱스를 만들고 싶다면 unique 를 빼면 된다.
( 조합 인덱스는 고유 인덱스를 만들고 싶어서 주로 사용하기 때문에 잘 사용하지 않는다 )
VIEW 는 복잡한 쿼리를 손쉽게 사용할 수 있도록 만들어 놓은 가상 테이블이다.
복잡한 서브쿼리나 조인을 이용하여 가상 테이블을 만들어 놓으면 해당 테이블만 검색하면 편리하게 사용이 가능하다.
VIEW 는 Index 를 가질 수 없다.
원래는 보는 것만 가능하였지만 시간이 지남에 따라 수정도 가능하게 바뀌어갔다.
( But DB마다 VIEW 옵션이 다르니 주의 )
-CREATE (OR REPLACE) VIEW [뷰 이름] AS [생성할 쿼리문]
기존 view 가 없으면 생성, 있으면 수정하는 명령어다.
여기서 OR REPLACE 는 기존 뷰를 수정할 때 사용한다.
이때 의도치 않게 기존 뷰를 덮어 쓸 수 있으니 사용에 주의해야 한다.
뷰에 보이는 데이터를 수정하면 원본도 수정이 된다.
다만 뷰로 지정하지 않은 데이터는 수정되지 않는다.
view 를 생성한 조건식을 만족하는 칼럼은 UPDATE 를 할 수 없도록 하는 옵션
즉, view 를 만들 때 사용한 조건 칼럼은 수정을 막는다.
여기서는 deptno = 1 를 조건으로 view 를 생성하였기 때문에
with check option 을 달아주면 view 를 통해 deptno 번호 수정은 불가능하다.
다만 보여주는 칼럼인 job,ename 수정은 가능하다.
만약 변경을 해야 할 상황이면 view 가 아닌 해당 테이블 emp 에서 데이터를 deptno = 2 로 수정이 가능하다.
SHOW tables
를 통해 확인이 가능하다.
SHOW FULL tables
는 테이블 타입까지 나온다.
SHOW CREATE VIEW [VIEW 이름]
을 통해 생성한 뷰가 실제로 어떻게 구성되어있는지도 확인이 가능하다.
DROP VIEW [삭제할 VIEW 이름]