마리아DB 실습(7)
-
[SQL 튜닝 실습] SQL 튜닝 중급 3
인덱스를 하나만 사용하는 나쁜 SQL 문 튜닝 전 SQL 문 select * from 사원 where 이름 = 'Matt' or 입사일자 = '1987-03-31' 튜닝 전 쿼리라고 해도 짧은 소요시간만을 기준으로 삼지않으며 더 나은 쿼리로 개선할 수 있다면 튜닝대상이 된다. 튜닝 전 실행계획 explain select * from 사원 where 이름 = 'Matt' or 입사일자 = '1987-03-31' 사원 테이블은 테이블 풀 스캔(ALL) 으로 처리된다. 튜닝 수행 조건절에 해당하는 데이터 분포 확인 이름=Matt : 233 건 입사일자=1987-03-31 : 111건 전체 데이터가 약 30만 건에 달하는 사원 테이블의 데이터 건수와 비교했을 때 이름 컬럼과 입사일자 컬럼의 조건절에서 조회하는 ..
2021.08.10 -
[SQL 튜닝 실습] SQL 튜닝 중급 2
필요 이상으로 많은 정보를 가져오는 나쁜 SQL 문 튜닝 전 SQL 문 select count(사원번호) as 카운트 from ( select 사원.사원번호, 부서관리자.부서번호 from ( select * from 사원 where 성별 = 'M' and 사원번호 > 300000 ) 사원 left join 부서관리자 on 사원.사원번호 = 부서관리자.사원번호 ) 서브쿼리; 튜닝 전 실행계획 id가 1인 행만 있으므로 먼저 출력된 사원테이블이 데이터에 접근하는 드라이빙 테이블이고 나중에 출력된 부서관리자 테이블이 드리븐 테이블임을 알 수 있다. 사원 테이블은 사원번호 > 300000 조건때문에 레인지스캔을 수행하며 기본키를 활용해서 데이터에 접근할 것임을 알 수 있다. 부서관리자 테이블은 사원.사원번호 =..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 중급 1
SQL 문 재작성으로 착한쿼리 만들기 처음부터 모든 데이터를 가져오는 나쁜 SQL 문 튜닝 전 SQL 문 select 사원.사원번호, 급여.평균연봉, 급여.최고연봉, 급여.최저연봉 from 사원, ( select 사원번호, round(avg(연봉),0) 평균연봉, round(max(연봉),0) 최고연봉, round(min(연봉),0) 최저연봉 from 급여 group by 사원번호 ) 급여 where 사원.사원번호 = 급여.사원번호 and 사원.사원번호 between 10001 and 10100; 튜닝 전 실행계획 튜닝 후 SQL 문 select 사원.사원번호, ( select round(avg(연봉), 0) from 급여 as 급여1 where 사원번호 = 사원.사원번호 ) as 평균연봉, ( sele..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 준비 5
DEPENDENT SUBQUERY UNION 또는 UNION ALL 을 사용하는 서브쿼리가 메인테이블에 영향을 받는 경우로, UNION 으로 연결된 단위 쿼리들 중에서 처음으로 작성한 단위쿼리에 해당되는 경우이다. UNION으로 연결되는 첫번째 단위쿼리가 독립적으로 수행하지 못하고 메인테이블로부터 값을 하나씩 공급받는 구조이므로 성능적으로 불리하여 SQL문이 튜닝대상이 된다. explain select 관리자.부서번호, ( select 사원1.이름 from 사원 as 사원1 where 성별 = 'F' and 사원1.사원번호 = 관리자.사원번호 union all select 사원2.이름 from 사원 as 사원2 where 성별 = 'M' and 사원2.사원번호 = 관리자.사원번호 ) as 이름 from ..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 준비 3
실행 계획 수행 SQL문으로 요청한 데이터를 어떻게 조회할 것인지에 대한 계획, 즉 경로에 대한 계획이다. (*) 여기서부터는 GUI인 MYSQL 워크벤치를 사용 기본실행계획 수행문 : 아래 아무거나 사용해도 된다. 개인적으로 EXPLAIN 사용 EXPLAIN SQL문; DESC SQL문; 실행계획 수행 SQL문 앞에 EXPLAIN 키워드를 입력하고 실행하면 옵티마이저가 만든 실행계획이 출력된다. use tuning; show tables; explain select * from 사원 where 사원번호 between 100001 and 200000; (*) 마리아 DB 버전 10.0.5 이상에서는 UPDATE 및 DELETE 문에서도 실행계획을 확인할 수 있다. 기본 실행계획 항목 분석 EXPLAIN ..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 준비 2
마리아 디비 환경변수 설정 변수 명 : MARIADB_HOME 변수 값 : C:\Program Files\MariaDB 10.5 Path 추가 : %MARIADB_HOME%\bin 실습데이터 넣기 mysql -uroot -p --port 3333
2021.08.09