본문 바로가기

데이터베이스7

재귀적 쿼리에 대한 이해 재귀적 쿼리는 쿼리 자체를 반복해서 실행하는 방식으로, 계층 구조나 그래프 형태의 데이터를 탐색할 때 특히 유용하다. 대부분의 관계형 데이터베이스 관리 시스템(RDBMS)에서는 Common Table Expressions (CTE)를 사용하여 재귀적 쿼리를 작성할 수 있다. 작동 원리 재귀적 쿼리는 기본적으로 두 부분으로 나뉜다: 기본 케이스 (Base case): 쿼리의 초기 결과를 반환한다. 재귀 케이스 (Recursive case): 이전 단계의 결과를 활용하여 추가적인 결과를 반환한다. 이 두 부분은 CTE 내에서 UNION이나 UNION ALL 연산을 사용하여 결합된다. 유용한 사용 시나리오 재귀적 쿼리는 다음과 같은 상황에서 유용하다: 계층 구조 데이터 탐색: 댓글과 대댓글 관계, 조직의 직원.. 2023. 9. 20.
MySQL `EXPLAIN`의 조인 타입(`type` 컬럼) 깊게 이해하기 MySQL 쿼리의 실행 계획에서 type 컬럼은 해당 쿼리의 레코드에 어떻게 접근할지를 나타내는 중요한 지표입니다. 이 값이 어떻게 되느냐에 따라 쿼리의 성능이 크게 달라질 수 있습니다. 1. ALL (Full Table Scan) 설명: 테이블의 모든 행을 스캔하는 방식. 이 방식은 가능한 피해야 합니다, 왜냐하면 대부분의 경우에 있어 매우 비효율적이기 때문입니다. 예시 시나리오: -- 아무런 조건이 없는 조회 쿼리 SELECT * FROM users; 2. INDEX 설명: 전체 인덱스를 스캔하는 방식. ALL보다는 낫지만, 여전히 비효율적일 수 있습니다. 예시 시나리오: -- 인덱스만을 스캔하는 쿼리 SELECT user_id FROM orders; 3. RANGE 설명: 인덱스를 사용하여 특정 범.. 2023. 9. 12.
MySQL `EXPLAIN`의 이해와 활용 MySQL EXPLAIN란? EXPLAIN은 MySQL에서 제공하는 명령어로, SQL 쿼리가 어떻게 실행될지에 대한 계획을 확인하는 데 사용됩니다. 특히 쿼리의 성능 최적화에 있어서 중요한 도구로 사용됩니다. EXPLAIN을 사용하면 다음과 같은 정보를 얻을 수 있습니다: 어떤 테이블들이 쿼리에 참여하는지 각 테이블을 어떤 순서로 스캔하는지 어떤 인덱스들이 사용되는지 얼마나 많은 행이 각 단계에서 처리되는지 주요 항목의 설명: id: 쿼리의 순서나 단계를 나타냅니다. select_type: 쿼리의 종류입니다 (예: SIMPLE, SUBQUERY, UNION). table: 현재 단계에서 참조되는 테이블 이름. type: 조인 타입 (예: ALL, INDEX, RANGE, REF, EQ_REF, CONST.. 2023. 9. 12.
복합키란 무엇인가? 복합키 (Composite Key) 또는 복합 기본키는 두 개 이상의 칼럼으로 구성된 기본키를 의미합니다. 이러한 키는 데이터베이스 테이블 내에서 레코드의 고유성을 보장하기 위해 사용됩니다. 때로는 하나의 칼럼만으로는 레코드의 고유성을 보장하기 어려울 때, 두 개 이상의 칼럼을 결합하여 고유한 키 값을 생성합니다. 복합키의 유용함 데이터 무결성 보장: 복합키를 사용하면, 한 테이블 내의 특정 칼럼 조합의 고유성을 보장할 수 있습니다. 이를 통해 데이터 중복을 방지하고 무결성을 유지할 수 있습니다. 정규화: 복합키는 데이터베이스 설계의 정규화 과정에서 발생하는 테이블 간의 관계를 나타내는 데 유용하게 사용됩니다. 예시 시나리오 1: 국제 도서 대여 서비스를 운영하는 회사에서는 여러 나라의 여러 도서관에서 .. 2023. 9. 6.