230322 DB_INDEX, VIEW

Myung A Lee·2023년 3월 22일
0

DB

목록 보기
11/15
post-thumbnail

INDEX (색인)

  • index( 색인 ) 은 검색을 빠르게 하기 위한 수단이다
  • Primary key 와 Unique key 가 지정되면 따로 index 를 생성된다
  • Index 장점
    - 검색 속도가 빨라진다
    - 시스템의 부하를 줄여 성능 향상
  • Index 단점
    - 인덱스 생성에 시간과 공간 필요
    - 삽입 갱신 삭제 가 빈번히 일어날 경우 성능 저하
  • Index가 필요한 경우
    - 데이터가 많을 경우
    - JOIN이 많이 사용된 경우
  • Index가 불필요한 경우
    - 데이터가 적을 경우
    - 삽입갱신 삭제 가 빈번히 일어나는 경우

1) UNIQUE INDEX

  • 중복되지 않는 데이터에 대해서 Index를 걸어 준다.
  • PK or UK를 설정하면 자동으로 설정 된다.
  • CREATE UNIQUE INDEX [index name] ON TABLE
    select * from emp;
    -- ename은 이미 중복이 있는 데이터이기 때문에 unique index 생성이 불가능하다.
    create unique index emp_ename_idx on emp(ename);

2) NON-UNIQUE INDEX

  • 중복된 데이터가 있는 경우 INDEX를 걸어준다.
  • CREATE INDEX [index name] ON TABLE
    create index emp_ename_idx on emp(ename);

3) 결합 INDEX

  • CREATE [UNIQUE] INDEX [index name] ON TABLE
    create index emp_combi_idx on emp(ename,job,deptno);

4) 인덱스 삭제 (속성 취급)

  • ALTER TABLE [table name] DROP INDEX [index name];
    alter table emp drop index emp_combi_idx;
    alter table emp drop index emp_ename_idx;

5) 인덱스 확인 (인덱스 데이터 사전)

show index from emp;

VIEW

  • 여러 테이블의 데이터를 모아서 만든 가상 테이블이다.
  • 복잡한 조인이나 서브쿼리를 이용한 데이터를 뷰로 만들어두면 다음 사람이 편리하게 사용할 수 있다.
  • 물리적인 실체가 없으므로 자신만의 인덱스를 가질 수 없다.

1) VIEW 생성 문법

  • Query 안에 담긴 조건으로 VIEW를 생성하겠다는 의미
  • CREATE [OR REPLACE] VIEW [view name] AS [QUERY];
  • OR REPLACE : 기존 뷰를 수정 할 때 사용
    create view vw_name as
    select e.ename, d.deptname from emp e join dept d on e.deptno = d.deptno ;

2) VIEW 사용 (일반 테이블과 똑같다.)

  • select * from vw_name;

3) VIEW에서 데이터 수정

  • 뷰에서 수정하면 해당 원본 테이블의 데이터도 수정 된다.
  • 대신 뷰를 생성할때 포함 된 데이터여야만 수정된다.
    update vw_name set ename = 'oh' where ename='kim';
    select from emp;
    select
    from dept;

4) VIEW 수성

  • CREATE OR REPLACE VIEW [view name] AS [QUERY];
  • CREATE OR REPLACE : 만약 해당 뷰가 있으면 수정 없으면 생성
  • ALTER로도 수정은 가능하지만 복잡
    create or replace view vw_name as
    select e.ename, d.deptname, d.loc from emp e join dept d on e.deptno = d.deptno ;

5) with check option

  • 뷰를 생성한 조건식을 만족하는 컬럼은 update할 수 없도록 하는 옵션
  • where 조건에 들어간 deptno컬럼은 수정이 불가능함
    create or replace view vw_chk as
    select ename, job,deptno from emp where deptno = 1 with check option ;
    update vw_chk set job='manager' where ename = 'lee';
  • CHECK OPTION failed
  • 만약 with check option이 없다면 수정된 내용이 변경되었을 때 뷰에서 빠질 수 있다.
    update vw_chk set deptno='2' where ename = 'lee';

6) 생성된 VIEW 조회

  • 생성한 뷰 조회
    show full tables where table_type = 'VIEW';
  • 특정 뷰에 대한 정보(뷰를 생성한 쿼리문)
    show create view vw_name;

7) VIEW 삭제

drop view vw_name;
drop view vw_chk;

0개의 댓글