Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | |
7 | 8 | 9 | 10 | 11 | 12 | 13 |
14 | 15 | 16 | 17 | 18 | 19 | 20 |
21 | 22 | 23 | 24 | 25 | 26 | 27 |
28 | 29 | 30 |
Tags
- 물리모델
- Workbench
- vue3
- sociallogin
- 함수종속
- 배타서브타입
- 주석제거
- 제1정규형
- bc정규형
- 더미데이터
- mysql
- 실행계획
- 정규형
- 중복서브타입
- Spring Cloud Gateway
- group-by
- 제5정규형
- 완전서브타입
- order-by
- 데이터통합
- 크롬원격데스크톱
- SQL
- index
- 빈줄제거
- 제4정규형
- 샘플데이터
- 워크벤치
- 불완전서브타입
- 서브타입
- 인덱스
Archives
- Today
- Total
domsam - IT 기술 블로그
4장 악성 SQL 튜닝으로 초보자 탈출하기 - (2) 본문
반응형
아래 접은글로 되어있는 내용을 보기 전에 각 예제의 내용을 확인하고 본인이 생각하는 쿼리문을 먼저 작성해 보세요.
4.2.1 기본 키를 변형하는 BAD SQL
사원번호(emp_no)가 1,100 이상이면서 사원번호가 5자리인 사원(employees)의 모든 정보를 출력하는 쿼리를 만들어 주세요. (찾은 행: 10)
더보기
튜닝 전 SQL문 - 10 rows in set (0.23 sec)
SELECT *
FROM employees
WHERE SUBSTRING(emp_no, 1, 4) = 1100
AND LENGTH(emp_no) = 5;
-- 4.2.1
-- 10개 레코드
SELECT emp_no, SUBSTRING(emp_no, 1, 4)
, LENGTH(emp_no), LENGTH(emp_no) = 5
FROM employees;
-- 4.2.2
EXPLAIN
SELECT IFNULL(gender, 'NO DATA') AS group_gender
, COUNT(1) AS cnt
FROM employees
GROUP BY group_gender;
EXPLAIN
SELECT gender
, COUNT(1) AS cnt
FROM employees
GROUP BY gender;
-- 4.2.3
-- 묵시적 형변환, (문자열 - 숫자형)
EXPLAIN
SELECT COUNT(1)
FROM salaries
WHERE yn_use = 1;
EXPLAIN
SELECT COUNT(1)
FROM salaries
WHERE yn_use = '1';
EXPLAIN
SELECT COUNT(1)
FROM salaries
WHERE CAST(yn_use AS SIGNED) = 1;
SELECT yn_use
, CAST(yn_use AS SIGNED)
, CONVERT(yn_use, SIGNED)
FROM salaries;
-- 4.2.4
EXPLAIN
SELECT *
FROM employees
WHERE CONCAT(gender, ' ', last_name) = 'M radwan';
SELECT gender, last_name, CONCAT(gender, ' ', last_name)
FROM employees;
EXPLAIN
SELECT *
FROM employees
WHERE gender = 'M'
AND last_name = 'radwan';
-- 4.2.5
SELECT e.emp_no, e.first_name, e.last_name, de.dept_no
FROM employees e
INNER JOIN dept_emp de
ON e.emp_no = de.emp_no;
-- dept_emp에서 부서가 2개 이상인 emp_no를 찾아주세요. (31,579)
SELECT emp_no, COUNT(emp_no)
FROM dept_emp
GROUP BY emp_no
HAVING COUNT(emp_no) > 1;
'SQL > SQL 튜닝' 카테고리의 다른 글
4장 악성 SQL 튜닝으로 초보자 탈출하기 - (1) (0) | 2025.03.25 |
---|---|
3장 SQL 튜닝의 실행 계획 파헤치기 - (2) (0) | 2025.03.17 |
3장 SQL 튜닝의 실행 계획 파헤치기 - (1) (0) | 2025.03.14 |
2장 SQL 튜닝 용어를 직관적으로 이해하기 (작성중) (0) | 2025.03.14 |