Study/CS 기초

데이터베이스 - 효율적 쿼리

김 도경 2024. 11. 1. 10:53

[2024.11.01] 필수 온라인 강의 Part5 데이터베이스 CH03 효율적 쿼리

인덱스
  • 인덱스 : MySQL
       - 테이블을 더 빠르게 조회하기 위한 참조 수단 (책의 ‘찾아보기’와 유사)
       - 실무에서 매우 빈번히 사용 for 검색 속도 향상
       - 열 단위로 사용
          - 두 개의 열을 묶은 하나의 인덱스도 만들 수 있음

    -> 인덱스가 없다면? 어쩔 수 없이 모든 테이블의 데이터를 스캔해야 한다
       : 테이블을 가리키는 대상이기에 테이블 삭제되면 같이 삭제

  • 인덱스의 부작용
       - 인덱스를 저장할 추가적인 저장 공간 필요
       - 인덱스 작성 시간도 있다: 행 데이터가 너무 많으면 이 시간이 오래 걸릴 수 있음
       - 검색(SELECT)가 아닌 작업(INSERT, UPDATE, DELETE) 시 성능 악화
       - 인덱스를 사용하기 좋은 열은 무엇일까?
  • 인덱스의 종류
    - 클러스터형 인덱스(Clustered index)
        - PRIMARY KEY (우선 지정) / UNIQUE + NOT NULL 제약 조건 지정 시 자동 생성 테이블 당 하나
        - 행 데이터가 인덱스로 지정된 데이터에 대해 자동 정렬
                 -  * select 했을 때 primary key에 대해 자동 정렬되는 것은 이 때문
    - 보조 인덱스(Secondary index)
         - 테이블당 여러 개 가능
         - 중복 가능
         - 고유키로 지정된 칼럼은 자동으로 보조 인덱스가 생성(UNIQUE 제약 조건)
         - 행 데이터가 인덱스로 지정된 데이터에 대해 자동 정렬 X
(보조) 인덱스 생성: CREATE INDEX 인덱스 조회: SHOW INDEX
인덱스 삭제: DROP INDEX 인덱스 삭제: DROP INDEX 사용방법
 

 

 

  • 뷰(view)란?
       - SELECT의 결과를 마치 테이블과 같이 간주 == 뷰
       - 쿼리 단순화 가능
       - 모든 데이터를 보여줄 필요가 없어짐
뷰 생성 뷰 삭제

 

  • 뷰(view)에 대한 작업

 

JOIN
  • JOIN(조인)이란
       - 관계형 데이터베이스의 핵심: 여러 개의 테이블을 하나로 묶는 방법
       - 다음과 같은 두 테이블이 있을 때 어떻게 하나로 합칠 수 있을까?
    * 서브 쿼리로 여러 번 JOIN 할 수도 있음

  • JOIN(조인)의 종류
       - INNER JOIN
       - (LEFT, RIGHT, FULL) OUTER JOIN

  • INNER JOIN



열명 : 테이블명1과 테이블명2의 열명이 겹칠 경우
   - 테이블명1.열명 혹은 테이블명2.열명

- 테이블명1과 테이블명2 결합 조건을 모두 만족하는 데이터만을 선택해 결합 (교집합)

 

  • OUTER JOIN
      - LEFT OUTER JOIN: 일단 테이블1 모두 선택, 테이블2를 합치되 매칭되지 않으면 NULL
      - RIGHT OUTER JOIN: 일단 테이블2 모두 선택, 테이블1를 합치되 매칭되지 않으면 NULL

      - FULL OUTER JOIN: 두 테이블 모두 선택, 매칭되지 않으면 NULL
            - UNION( 쿼리의 결과를 합치기 )을 이용해 구현

'Study > CS 기초' 카테고리의 다른 글

데이터베이스 - NoSQL  (1) 2024.11.01
데이터베이스 - 생성과 관리  (2) 2024.10.31
데이터베이스 거시적으로 보기  (1) 2024.10.30
소켓 프로그래밍  (0) 2024.10.29
시스템 프로그래밍 - 프로세스와 스레드  (1) 2024.10.28