본문 바로가기

CS/Database18

[MySQL] Query Cost가 높아지는 조건과 성능 개선 포인트 ✅ Query Cost가 높아지는 조건과 성능 개선 포인트✅ 1. 쿼리 비용(Query Cost)이란?MySQL 옵티마이저(optimizer)가 계산한 논리적 실행 비용EXPLAIN 또는 EXPLAIN ANALYZE에서 cost=0.15..23.80 이런 식으로 나타남크다고 해서 항상 "나쁘다"는 뜻은 아님 → 상대적 판단 기준주로 다음 요소가 반영됨:디스크 I/O 비용 (풀 테이블 스캔, 정렬, 임시 테이블)읽는 행 수인덱스 사용 여부조인 순서반복 루프 횟수✅ 2. 쿼리 비용이 높아지는 주요 조건 + 개선 방향조건성능 저하 원인개선 포인트1. type: ALL테이블 전체 스캔 (풀스캔)인덱스 추가, WHERE 조건 개선2. key: NULL인덱스 미사용적절한 인덱스 생성3. WHERE 절에 함수 사용인.. 2025. 4. 13.
[MySQL] UNION / UNION ALL 결과의 고급 활용 예제 UNION 또는 UNION ALL로 만든 결과를👉 다시 조인하거나,👉 집계(GROUP BY, SUM 등) 하거나,👉 조건 필터링(WHERE, HAVING) 하는 고급 실무형 쿼리 예제.이건 리포트, 로그 통합, 활동 분석 등에서 아주 자주 등장하는 패턴.✅ UNION / UNION ALL 결과의 고급 활용 예제🎯 시나리오: 활동 기록 통합 + 분석다음과 같은 3개의 로그 테이블이 있다고 가정하자:테이블설명logins(user_id, login_time)로그인 로그orders(user_id, order_date, amount)주문 로그inquiries(user_id, inquiry_time)고객 문의 로그✅ 1. UNION ALL로 활동 로그 통합SELECT user_id, login_time AS.. 2025. 4. 13.
[MySQL] UNION / UNION ALL ✅ UNION / UNION ALL 완전 정복🧠 1. 기본 개념연산자설명UNION중복 제거하면서 두 SELECT 결과를 수직으로 합침UNION ALL중복 포함한 채로 두 SELECT 결과를 수직으로 합침🔻 공통점:SELECT 결과의 컬럼 수와 순서, 타입이 같아야 함✅ 2. 기본 사용 예시📍 예시 테이블-- 테이블 1: 고객 문의SELECT '문의' AS type, user_id, created_at FROM inquiries-- 테이블 2: 고객 불만 접수SELECT '불만' AS type, user_id, created_at FROM complaints✅ UNIONSELECT '문의' AS type, user_id, created_at FROM inquiriesUNIONSELECT '불만' AS.. 2025. 4. 13.
[MySQL] MySQL의 JOIN 완전 정복 + FULL OUTER JOIN 대체 방법 ✅ MySQL의 JOIN 완전 정복 + FULL OUTER JOIN 대체 방법까지🧠 1. JOIN이란?두 개 이상의 테이블을 공통된 컬럼을 기준으로 연결해 하나의 결과 집합을 만드는 방식실무에서 매우 흔하게 사용됨: 사용자 + 주문, 제품 + 카테고리, 회원 + 주소 등✅ 2. JOIN 종류 요약JOIN 종류설명MySQL 지원 여부INNER JOIN두 테이블 모두에 존재하는 교집합✅ 지원LEFT OUTER JOIN (LEFT JOIN)왼쪽 테이블은 모두 표시, 오른쪽은 일치하는 것만✅ 지원RIGHT OUTER JOIN (RIGHT JOIN)오른쪽 테이블은 모두 표시, 왼쪽은 일치하는 것만✅ 지원FULL OUTER JOIN양쪽 모두 표시 (합집합)❌ MySQL은 직접 지원 안 함CROSS JOIN모든 조.. 2025. 4. 13.
[MySQL] SubQuery 사용 📌 서브쿼리가 사용될 수 있는 위치위치사용 예시SELECT 절컬럼처럼 사용FROM 절인라인 뷰처럼 사용WHERE 절조건 필터로 사용HAVING 절그룹 결과 필터링IN, EXISTS, =, , > 등 조건 내부값 비교📘 서브쿼리란?SELECT문 내부에 포함된 또 다른 SELECT문단일 값, 다중 값, 테이블처럼 사용 가능복잡한 조건을 처리하거나, 결과 비교, 동적 조건 처리에 유용✅ 1. WHERE 절에서 서브쿼리 사용✅ 1-1. 단일 값 반환 서브쿼리 (=, , >, !=, 등)SELECT name, salaryFROM employeesWHERE salary > ( SELECT AVG(salary) FROM employees);📌 설명:salary > 평균 급여 조건을 위해, AVG 결과값을.. 2025. 4. 13.
[MySQL] GROUP BY / HAVING 관련 SELECT 컬럼 정리 + 인라인 뷰 (inline view) 활용법 ✅ GROUP BY / HAVING 관련 SELECT 컬럼 정리 + 데이터 출력 활용법📘 1. GROUP BY의 기본 개념 복습SELECT 컬럼, 집계함수FROM 테이블GROUP BY 컬럼;GROUP BY는 특정 컬럼 값을 기준으로 행들을 그룹화그룹별로 집계함수(Aggregate Function)를 함께 사용보통 GROUP BY에 사용된 컬럼을 SELECT에 포함시킵니다.집계 함수만 사용하면 어떤 기준으로 집계된 것인지 알기 어렵기 때문에, GROUP BY 컬럼을 함께 조회하여 무엇에 대한 집계인지 더 명확하게 보여줄 수 있습니다.✅ 2. SELECT 절에 올 수 있는 컬럼 종류 (GROUP BY 사용 시)SELECT에 올 수 있는 컬럼 종류조건예시① GROUP BY에 명시된 컬럼가능SELECT dep.. 2025. 4. 13.