TIL / DB 2주차(1) / INDEX / VIEW

병아리코더 아카이브·2023년 9월 4일
0

DB

목록 보기
8/9
post-thumbnail

INDEX

  • INDEX(색인) 은 검색을 빠르게 하기 위한 수단이다.

INDEX 의 장단점

  • 검색 속도가 빨라지고 시스템의 부하를 줄여 성능을 향상시킨다.

  • 다만 인덱스 생성에 시간과 공간이 필요하며 삽입/갱신/삭제가 빈번히 일어나는 경우 성능을 저하시킨다.

  • 그래서 데이터가 많을 경우나 JOIN 이 많이 사용된 경우에 필요하고 데이터가 적거나 수정이 빈번하게 일어나는 경우엔 필요하지 않다.

고유 인덱스(Unique Index)

  • CREATE UNIQUE INDEX [인덱스 이름] ON [테이블(적용 칼럼)]

  • 중복되지 않은 데이터에 사용하는 인덱스

  • Primary Key 나 Unique Key 적용시 자동으로 생성된다.

  • 중복되는 데이터가 있는 칼럼에 인덱스를 적용시키려고 하면 에러가 난다.

비고유 인덱스(Non-unique Index)

  • CREATE INDEX [인덱스 이름] ON [테이블(적용 칼럼)]

  • 중복되는 데이터가 있는 칼럼에 걸 수 있는 인덱스

  • Foreign Key 생성 시 자동으로 생성된다.

  • ALTER TABLE [테이블명] DROP INDEX [인덱스 이름] - 인덱스 삭제

결합 인덱스

  • CREATE UNIQUE INDEX [인덱스 이름] ON [테이블(적용 칼럼,...)]

  • 복수의 컬럼을 합쳐서 하나의 인덱스로 만들 수 있다.

  • 최대 결합 컬럼은 16개 이다.

  • 일반 조합 인덱스를 만들고 싶다면 unique 를 빼면 된다.
    ( 조합 인덱스는 고유 인덱스를 만들고 싶어서 주로 사용하기 때문에 잘 사용하지 않는다 )



View

  • VIEW 는 복잡한 쿼리를 손쉽게 사용할 수 있도록 만들어 놓은 가상 테이블이다.

  • 복잡한 서브쿼리나 조인을 이용하여 가상 테이블을 만들어 놓으면 해당 테이블만 검색하면 편리하게 사용이 가능하다.

  • VIEW 는 Index 를 가질 수 없다.

  • 원래는 보는 것만 가능하였지만 시간이 지남에 따라 수정도 가능하게 바뀌어갔다.
    ( But DB마다 VIEW 옵션이 다르니 주의 )

view 생성

-CREATE (OR REPLACE) VIEW [뷰 이름] AS [생성할 쿼리문]

  • 기존 view 가 없으면 생성, 있으면 수정하는 명령어다.

  • 여기서 OR REPLACE 는 기존 뷰를 수정할 때 사용한다.
    이때 의도치 않게 기존 뷰를 덮어 쓸 수 있으니 사용에 주의해야 한다.

view 사용 방법

  • 뷰에 보이는 데이터를 수정하면 원본도 수정이 된다.

  • 다만 뷰로 지정하지 않은 데이터는 수정되지 않는다.

view 수정

  • ALTER TABLE 을 사용할 수 있지만 OR REPLACE 를 사용하여 기전 뷰를 수정할 수 있다.

WITH CHECK OPTION

  • view 를 생성한 조건식을 만족하는 칼럼은 UPDATE 를 할 수 없도록 하는 옵션
    즉, view 를 만들 때 사용한 조건 칼럼은 수정을 막는다.

  • 여기서는 deptno = 1 를 조건으로 view 를 생성하였기 때문에
    with check option 을 달아주면 view 를 통해 deptno 번호 수정은 불가능하다.

  • 다만 보여주는 칼럼인 job,ename 수정은 가능하다.

  • 만약 변경을 해야 할 상황이면 view 가 아닌 해당 테이블 emp 에서 데이터를 deptno = 2 로 수정이 가능하다.

view 확인

  • SHOW tables 를 통해 확인이 가능하다.

  • SHOW FULL tables 는 테이블 타입까지 나온다.

  • SHOW CREATE VIEW [VIEW 이름] 을 통해 생성한 뷰가 실제로 어떻게 구성되어있는지도 확인이 가능하다.

view 삭제

  • DROP VIEW [삭제할 VIEW 이름]

0개의 댓글

관련 채용 정보