DB - View, Index

이상해씨·2022년 9월 14일
0

웹 풀스택(JAVA)

목록 보기
43/54

✔ View

  • View : 관점
    • 하나의 테이블 혹은 여러 테이블에 대하여 특정 사용자나 조직의 관점에서 데이터를 바라볼 수 있도록 해주는 수단.
    • 가상 테이블
      • 일반 테이블 : 실제로 물리적인 데이터를 가지고 있음.
      • View : 물리적인 데이터를 갖지 않고, 이미 정의돈 일반 테이블로부터 데이터를 가져와 출력.
    • 필요성
      • 필요한 정보를 따로 관리하면 데이터 중복, 불일치 발생.
      • 필요에 따라 숨겨야하는 컬럼도 발생.
    • View에 대해서도 행 추가, 수정, 삭제가 가능 : 무결성 규칙이 만족하는 경우

◾ View의 목적

  • 다양한 관점 : 하나의 테이블에 대하여 서로 다른 관점으로 보기 원하는 경우.
  • 보안 유지 : 테이블에서 일반 사용자에게 감추어야할 컬럼이 있을 경우. (해당 컬럼을 제외한 View 제공)
  • 재사용 : 자주 사용하는 복잡한 질의문을 미리 View로 만들어 사용.

◾ View 생성

-- CREATE VIEW로 생성.
CREATE VIEW view_name
-- AS 구문 뒤에 실행할 QUERY 작성.
AS
SELECT_QUERY

✔ Index

  • Index : 검색 속도 향상시킬 수 있는 수단.
    • 책 뒤에 있는 색인과 같은 역할.
    • 인덱스는 항상 정렬된 상태 유지 => 빠른 시간에 검색 가능.
    • 필요성
      • 순차 검색은 데이터가 많고 최악인 경우 오랜 시간 필요.
      • 이진 검색일 경우 데이터가 수정될 때마다 정렬을 유지하는 비용 발생.

◾ 인덱스 동작 원리.

  • 검색 기준이 되는 컬럼만을 정렬 상태로 유지.
  • 인덱스의 각 행은 원래 데이터가 저장되어 있는 테이블에 대응하는 행의 주소 보유.

◽모든 컬럼에 대한 인덱스는 유용한가?

  • 바람직하지 않음.
  • 인덱스의 저장 공간 차지, 정렬 상태 유지를 위한 비용 발생.
  • 인덱스가 많아지면 인덱스 재정렬시 많은 시간 필요 -> DBMS의 성능 저하.
  • 꼭 필요한 컬럼에 대해서만 인덱스 적용.

◾ 일반적인 지침

  • 주요 적용 대상 : [WHERE절에서 비교 대상, JOIN에 사용되는 컬럼]
  • 행의 수가 적으면(200~300개) 인덱스를 지정하여도 효과가 별로 없음.
  • 인덱스로 지정한 컬럼에 의해 검색했을 때, 전체 행의 10%~15% 미만일 경우 효과가 있음.
    • 결과가 많이 나올 경우 순차 검색이 더 빠를 수 있음.

◾ DBMS 자동 인덱스 : 기본키, UNIQUE

  • 클러스터형 인덱스
    • 보통 기본키(Primary Key) 컬럼에 자동 생성.
      • 검색의 기준이 되는 경우가 많음.
      • 행의 중복 여부 확인 작업에 이용하기 위해 사용.
    • 내용 자체가 순서대로 정렬되어 있어 인덱스 자체가 데이터의 내용과 동일.
  • 보조 인덱스
    • 보통 UNIQUE 지정된 컬럼에 자동 생성.
      • 새로 만드는 인덱스들은 대부분 보조 인덱스.
    • 인덱스가 별도로 있고, 인덱스의 각 행에 있는 원래 데이터의 행 주소를 이용해 실제 데이터 찾음.

◾ 인덱스 확인

  • SHOW INDEX FROM 테이블명 : 테이블에 적용된 인덱스 확인.
    • 기본키, UNIQUE 자동 인덱스.

◾ 인덱스 생성

  • CREATE INDEX 인덱스명 ON 테이블명(컬럼명)

◾ 인덱스 삭제

  • ALTER TABLE 테이블명 DROP INDEX 인덱스명
profile
후라이드 치킨

0개의 댓글