데이터베이스/DB 4

Join

Join이란? 여러 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 방법 INNER JOIN - 테이블 간의 교집합을 구함 - INNER JOIN은 각 테이블에서 조인 조건에 일치하는 테이블만 가져옴 OUTER JOIN - 한쪽에만 데이터가 나와도 결과가 나오는 형태 LEFT OUTER JOIN Left Outer Join은 왼쪽 테이블의 모든 값이 나오고, 오른쪽은 조건에 충족하는 값만 나오는 형태임 SELF JOIN 자기 자신과 조인하는 방법 CROSS JOIN - 한쪽 테이블의 모든 행과 다른 쪽 테이블의 모든 행을 조인 시키는 방법 - 상호 조인의 전체 행 수는 두 테이블의 각 행의 개수를 곱한 수 만큼 됨 - 카티션 곱(CARTESIAN PRODUCT)라고 함

Index

인덱스란? - 무작위로 저장된 데이터 집합에서 원하는 데이터를 쉽고 빠르게 찾을 수 있도록 제공하는 하나의 오브젝트 - 흔히 책의 '목차'로 비유됨 클러스터드 인덱스 클러스터드 인덱스는 테이블 자체를 인덱스로 만드는 형태로, Root 페이지에는 Leaf 페이지의 주소가 들어가고, 인덱스의 리프(Leaf) 페이지가 데이터 페이지가 되는 형태임 비클러스터드 인덱스 비클러스터드 인덱스는 클러스터드 인덱스와 다르게 리프노드가 인덱스 페이지로 구성이 되어 있음. 사용자가 비클러스터드 인덱스로 지정이 된 키 값을 가지고 조회를 하면, 리프 노드에 있는 데이터의 주소값을 통해서 데이터를 찾아준다는 의미임. 클러스터드 인덱스 vs 비클러스터드 인덱스 예를 들어서, 국가 번호가 '1'인 국가를 찾는 상황이면, 클러스터드..

Page

DB 내에서 '데이터'는 페이지 단위로 저장이 되어 있음. 페이지란? 데이터베이스의 데이터 파일(mdf, ndf)에 할당되는 디스크 공간 페이지의 구조 페이지는 Header, Body, Row Offset Table로 구성이 되어 있음 Header: 시스템 정보(Page의 번호, 유형, 가용 크기 등) 저장 Body: 실질적인 데이터의 값 저장 Row Offset Table: 데이터(Row 단위)의 주소값을 저장하는 Table 페이지의 종류 테이블에 할당된 페이지를 확인해 볼때, 서로 다른 종류의 페이지가 할당 되어 있는것을 볼 수 있다. 이는, 행 데이터의 종류에 따라 페이지의 할당 단위가 다르기 때문이다. 여기서 페이지의 종류에 대해 알아보자면, IN_ROW_DATA: 행의 크기가 8KB보다 작은 경..