전체 글(278)
-
[SQL 튜닝 실습] SQL 튜닝 준비 2
마리아 디비 환경변수 설정 변수 명 : MARIADB_HOME 변수 값 : C:\Program Files\MariaDB 10.5 Path 추가 : %MARIADB_HOME%\bin 실습데이터 넣기 mysql -uroot -p --port 3333
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 준비 1
실습환경 구성하기 마리아DB 설치 다운로드 기본구성 서비스 네임 마리아DB bin 경로로 이동 후 실행 cd C:\Program Files\MariaDB 10.5\bin mysql -uroot -p --port 3333 show databases; 데이터 세팅하기 실습파일 다운로드 다운로드 후 저장 폴더 C:\db_data\
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 기초 6
테이블 조인 설정 변경으로 착한 쿼리 만들기 작은 테이블이 먼저 조인에 참여하는 나쁜 SQL 문 튜닝 전 SQL 문 select 매핑.사원번호, 부서.부서번호 from 부서사원_매핑 매핑, 부서 where 매핑.부서번호 = 부서.부서번호 and 매핑.시작일자 >= '2002-03-01'; 튜닝 전 실행계획 explain select 매핑.사원번호, 부서.부서번호 from 부서사원_매핑 매핑, 부서 where 매핑.부서번호 = 부서.부서번호 and 매핑.시작일자 >= '2002-03-01'; 드라이빙 테이블인 부서 테이블과 드리븐 테이블인 부서사원_매핑 테이블은 중첩 루프 조인을 수행 UI_부서명 인덱스를 활용해 인덱스 풀 스캔을 한다. 드리븐 테이블에서 대량 데이터에 대해 랜덤 액세스를 하면 비효율적이다..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 기초 5
동등 조건으로 인덱스를 사용하는 나쁜 SQL 문 튜닝 전 SQL 문 select * from 사원출입기록 where 출입문 = 'B' 튜닝 전 실행계획 explain select * from 사원출입기록 where 출입문 = 'B' I_출입문 인덱스를 사용해서 데이터에 접근한다. 명확한 상수화 조건으로 데이터 접근 범위를 줄였기때문에 ref 항목이 const로 출력된다. (*) MariaDB 신버전의 경우 ALL 타입(테이블 풀 스캔)으로 출력된다. 튜닝 수행 select 출입문, count(1) from 사원출입기록 group by 출입문 튜닝 후 SQL 문 select * from 사원출입기록 ignore index(I_출입문) where 출입문 = 'B' 출입문 B는 총 66만 건 전체 데이터 중 ..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 기초 4
인덱스 고려없이 열을 사용하는 나쁜 SQL 문 튜닝 전 SQL 문 select 성, 성별, count(1) as 카운트 from 사원 group by 성, 성별 튜닝 전 실행 계획 explain select 성, 성별, count(1) as 카운트 from 사원 group by 성, 성별 I_성별_성 인덱스키를 가지고 인덱스 풀스캔(Using index)으로 접근한다. 성과 성별 컬럼 순으로 재정렬하기위해 Using temporary 를 사용한다. 사원 테이블의 인덱스 show index from 사원 튜닝 전 SQL 문에서 사원테이블의 I_성별_성 인덱스를 활용하는데도 메모리나 디스크에 임시 테이블을 꼭 생성해야할지 고민해야한다. I_성별_성 인덱스는 성별과 성 컬럼순으로 생성된 오브젝트로 해당 인덱스..
2021.08.09 -
[SQL 튜닝 실습] SQL 튜닝 기초 3
습관적으로 중복을 제거하는 나쁜 SQL문 튜닝 전 SQL문 select distinct 사원.사원번호, 사원.이름, 사원.성, 부서관리자.부서번호 from 사원 join 부서관리자 on (사원.사원번호 = 부서관리자.사원번호) 튜닝 전 실행계획 explain select distinct 사원.사원번호, 사원.이름, 사원.성, 부서관리자.부서번호 from 사원 join 부서관리자 on (사원.사원번호 = 부서관리자.사원번호) 테이블 id값이 둘 다 1로 서로 조인하고 있으며 부서관리자 테이블은 인덱스 풀 스캔, 사원 테이블은 사원번호라는 기본키를 사용해서 단 1건의 데이터 조회하는 방식으로 조인 distinct() 를 위해 별도 임시테이블 (extra 항목 : Using temporary)을 생성 (*) ..
2021.08.08