본문 바로가기
반응형
SMALL

SQL 튜닝/SQL 문 재작성4

[SQL 튜닝] 대량의 데이터를 가져와 조인하는 나쁜 SQL 문 대량의 데이터를 가져와 조인하는 나쁜 SQL 문 현황 분석 | 튜닝 전 실행 계획 | 부서관리자 테이블과 부서사원_매핑 테이블을 부서번호 열로 조인하고 중복을 제거한 부서번호를 출력하는 쿼리 즉, 부서의 관리자가 소속된 부서번호를 조회하면서 부서사원_매핑 테이블에도 있는 부서번호를 선택 EXPLAIN SELECT DISTINCT 매핑.부서번호 FROM 부서관리자 관리자, 부서사원_매핑 매핑 WHERE 관리자.부서번호 = 매핑.부서번호 ORDER BY 매핑.부서번호; - SQL문 결과 : 총 9건의 결과 출력, 382ms 소요 - 부서번호 정보에서 중복이 제거되고 오름차순으로 정렬된 9건의 데이터 출력 - id가 1인 부서사원_매핑 테이블과 부서관리자 테이블의 2개 행 출력 - 드라이빙 테이블 : 부서사원.. 2023. 7. 29.
[SQL 튜닝] 필요 이상으로 많은 정보를 가져오는 나쁜 SQL 문 필요 이상으로 많은 정보를 가져오는 나쁜 SQL 문 현황 분석 | 튜닝 전 실행 계획 | 사원 테이블에서 성별이 M(남)이고, 사원번호가 300,000을 초과하는 사원 대상으로 부서관리자 테이블과 외부 조인을 수행한 뒤, 해당하는 사원번호의 개수를 출력하는 쿼리 SELECT COUNT(사원번호) AS 카운트 FROM ( SELECT 사원.사원번호, 부서관리자.부서번호 FROM (SELECT * FROM 사원 WHERE 성별 ='M' AND 사원번호 > 300000 ) 사원 LEFT JOIN 부서관리자 ON 사원.사원번호 = 부서관리자.사원번호 ) 서브쿼리 /* 실행계획 */ EXPLAIN SELECT COUNT(사원번호) AS 카운트 FROM ( SELECT 사원.사원번호, 관리자.부서번호 FROM (S.. 2023. 7. 28.
[SQL 튜닝] 비효율적인 페이징을 수행하는 나쁜 SQL 문 비효율적인 페이징을 수행하는 나쁜 SQL 문 현황 분석 | 튜닝 전 실행 계획 | 사원 테이블과 급여 테이블의 내부 조인을 수행하는 쿼리 사원번호가 10,0001 ~ 50,000번에 사이에 해당하는 데이터들을 사원번호 기준으로 그루핑한 뒤 연봉 합계 기준으로 내림차순 정렬 (150번째 데이터부터 10건의 데이터만 제한) EXPLAIN SELECT 사원.사원번호, 사원.이름, 사원.성, 사원.입사일자 FROM 사원, 급여 WHERE 사원.사원번호 = 급여.사원번호 AND 사원.사원번호 BETWEEN 10001 AND 500000 GROUP BY 사원.사원번호 ORDER BY SUM(급여.연봉) DESC LIMIT 150,10; - SQL문 결과 : 총 10건의 결과 출력, 1.59s 소요 - 드라이빙 테이.. 2023. 7. 27.
[SQL 튜닝] 처음부터 모든 데이터를 가져오는 나쁜 SQL 문 처음부터 모든 데이터를 가져오는 나쁜 SQL 문 현황 분석 | 튜닝 전 실행 계획 | 사원번호가 10,0001번부터 10,100번까지인 사원들의 평균연봉과 최고연봉, 최저연봉을 구하는 쿼리FROM 절의 급여 테이블에 사원별 평균/최고/최저 연봉을 조회하는 인라인 뷰가 있고, 사원 테이블의 사원번호 열과 내부 조인하여 최종 통계 결과 출력 EXPLAIN SELECT 사원.사원번호, 급여.평균연봉, 급여.최고연봉, 급여.최저연봉 FROM 사원, (SELECT 사원번호, ROUND(AVG(연봉),0) 평균연봉, ROUND(MAX(연봉),0) 최고연봉, ROUND(MIN(연봉),0) 최저연봉 FROM 급여 GROUP BY 사원번호 ) 급여 WHERE 사원.사원번호 = 급여.사원번호 AND 사원.사원번호 BETW.. 2023. 7. 24.
반응형
LIST