본문 바로가기

코딩 공부 기록/SQL12

[MSSQL] JOIN의 종류 (논리적, 물리적) 조인의 정의와 논리적 조인(INNER, OUTER 등), 물리적 조인(Nested Loop Join, Merge Join 등) 에 대해 자세히 알아보자.  조인이란?관계가 있는 두 개 이상의 테이블을 주어진 조건으로 결합하여 하나의 결과 집합으로 출력하는 기능.-- 기본 구문SELECT * FROM 테이블명 AJOIN 테이블명 BON 조인 조건   논리적 조인 (INNER, OUTER, CROSS, APPLY) 1. INNER JOIN 교집합되는 (조인 조건을 모두 만족하는) 데이터만 결과로 출력하는 조인. SELECT e.Name, d.Dept_no, d.Dept_NameFROM Employee e INNER JOIN Department dON e.Dept_No = d.Dept_No A와 B에서 교집합.. 2024. 12. 30.
[MSSQL] 테이블 복제 복사 방법 작업을 하다보면 테이블을 복사해야하는 경우가 종종 있다. 테이블만 복사, 테이블+데이터 복사, A데이블 -> B테이블 데이터만 복사.  1. 테이블 + 데이터복사SELECT * INTO 복사 테이블명FROM 원본 테이블명  2.  테이블만 복사SELECT *INTO 복사 테이블명FROM 원본 테이블명WHERE 1=2 3. A테이블 -> B테이블 데이터 복사A라는 테이블이 있고 B라는 테이블이 있는데, A의 데이터를 B로 옮기고 싶을 때 사용한다.INSERTINTO 복사 테이블명(B)SELECT * FROM 원본 테이블명(A) 2024. 12. 12.
[MSSQL] 격리 수준 (ISOLATION) 격리 수준(ISOLATION)이란?트랜잭션이 수행될 때 다른 트랜잭션으로부터 영향을 받지 않게 고립성을 유지시키는 것.다른 트랜잭션에 영향을 받지 않도록 잠금(Lock)을 사용하여 격리 수준으로 잠금의 유형을 정리한다.  격리 수준의 필요성데이터 일관성 유지 : 트랜잭션 간의 간섭을 방지하여 데이터의 일관성을 보장동시성 제어 : 여러 트랜잭션이 동시에 실행될 수 있도록 하여 성능과 데이터 무결성 간의 균형을 맞춤비즈니스 요구 사항 충족 : 각 애플리케이션의 데이터 처리 요구에 맞는 격리 수준을 선택할 수 있음트랜잭션 충돌 방지 : 동시에 실행되는 트랜잭션 간의 충돌을 방지하여 데이터 무결성을 유지성능 최적화 : 적절한 격리 수준을 통해 성능과 데이터 일관성 간의 균형을 조절 동시성에 대한 3가지 문제점1.. 2024. 12. 9.
[MSSQL] SQL Server 잠금(LOCK)의 종류 격리 수준에 대해 공부하다가 잠금의 종류를 몰라서 내용 이해가 어려웠다.그래서 격리 수준 공부 중단하고 잠금부터 공부...를.............................. 1. 잠금의 종류1) 공유 잠금 (Shared Lock, S)데이터를 읽을 때 사용되는 잠금이다.  (SELECT문)여러 트랜잭션이 동시에 데이터를 읽을 수 있지만, 데이터에 대한 수정은 불가능하다.여러 트랜잭션이 동시에 공유 잠금을 가질 수 있지만, 공유 잠금 동안 해당 데이터에 대한 배타적 잠금은 허용되지 않음.  2) 배타적 잠금 (Exclusive Lock, X)데이터를 수정할 때 사용되는 잠금으로 INSERT, UPDATE, DELETE에서 사용된다.배타적 잠금이 설정된 데이터는 다른 트랜잭션이 읽거나 수정할 수 없고,.. 2024. 12. 6.
[MSSQL] 통계 구성요소(Statistics) 1. 통계(Statistics)란?테이블이나 인덱스의 데이터 분포를 나타내는 메타데이터로, 쿼리 최적화 도구(Query Optimizer)가 효율적인 실행 계획을 생성하는 데 사용된다. 효율적인 쿼리 실행을 위해 필수적인 요소이다.  2. 통계의 필요성 통계는 조회 대상 데이터의 예상되는 행 수를 산정하는 기반이 된다. 그래서 통계 정보가 없을 때의 실행계획에서는 1,258,290건을 예상하고 Hash Join으로 수행했다.그와 다르게 통계 정보가 있을 떄의 실행계획은 예상 행 수가 6,090건으로 낮게 계산되면서 Merge Join의 실행 계획으로 수행한다. 이처럼 통계 정보의 유무에 따라 예상 행 수가 달라지고, 실행 계획에 차이가 발생하게 된다.   3. 통계 구성요소통계는 헤더, 밀도 벡터, 히스.. 2024. 12. 5.
[SQL] 인덱스 조각화 인덱스 조각화란?데이터의 삽입, 업데이트, 삭제와 같은 작업이 반복되면서 인덱스 페이지들이 물리적으로 비효율적인 상태로 변하는 현상이로 인해 데이터 검색 성능이 저하되고, 쿼리 실행 시간이 길어질 수 있다.조각화는 클러스터형 인덱스와 비클러스터형 인덱스에서 발생할 수 있는데, 1) 내부 조각화 와 2) 외부 조각화가 있다.  인덱스 조각화 발생 원인1. 데이터 삽입 : 새로운 데이터가 기존 페이지에 들어가지 못하고 새로운 페이지로 분산될 때.2. 데이터 삭제 : 삭제된 공간이 재사용되지 않고, 빈 공간으로 남아있는 경우.3. 데이터 업데이트 : 기존 데이터의 크기가 커져, 현재 페이지에 저장되지 못하고 다른 페이지로 이동할 때.4. 인덱스 재구성 부족 : 인덱스 생성 후, 오랜 기간 동안 인덱스를 재구성.. 2024. 11. 25.