분류 전체보기99 간편 은행 스키마 -- 고객 테이블CREATE TABLE Customer ( customer_id INT PRIMARY KEY AUTO_INCREMENT, name VARCHAR(100) NOT NULL, email VARCHAR(100) NOT NULL UNIQUE);-- 계좌 테이블CREATE TABLE Acc ( account_id INT PRIMARY KEY AUTO_INCREMENT, account_type ENUM('01', '02', '03', '04') NOT NULL, balance DECIMAL(15, 2) NOT NULL, customer_id INT NOT NULL );-- 카드 테이블CREATE TABLE Card ( card_id INT PRIMARY.. 2025. 3. 27. 4장 악성 SQL 튜닝으로 초보자 탈출하기 - (2) 아래 접은글로 되어있는 내용을 보기 전에 각 예제의 내용을 확인하고 본인이 생각하는 쿼리문을 먼저 작성해 보세요. 4.2.1 기본 키를 변형하는 BAD SQL사원번호(emp_no)가 1,100 이상이면서 사원번호가 5자리인 사원(employees)의 모든 정보를 출력하는 쿼리를 만들어 주세요. (찾은 행: 10)더보기튜닝 전 SQL문 - 10 rows in set (0.23 sec) WHERE 절에서 index 컬럼을 가공하게 되면 index를 활용할 수 없습니다. 그래서 가공하지 않고 원본값 그대로 사용하여야 인덱스를 활용할 수 있다. SELECT * FROM employees WHERE SUBSTRING(emp_no, 1, 4) = 1100 AND LENGTH(emp_no) = 5; 튜닝 후 .. 2025. 3. 25. 4장 악성 SQL 튜닝으로 초보자 탈출하기 - (1) 01. AUTO COMMITMySQL은 디폴트로 AUTO COMMIT이 활성화 되어 있기 때문에 INSERT, UPDATE, DELETE 작업 후에는 되돌릴 수가 없습니다. 그래서 작업 전에 백업을 하거나 AUTO COMMIT을 비활성화하여 결과를 보고 적용하거나 원 상태로 되돌리기 할 수 있습니다. -- AUTO COMMIT 확인 (1: 활성화, 0: 비활성화)SELECT @@autocommit;-- AUTO COMMIT 활성화SET autocommit = 1;-- AUTO COMMIT 비활성화SET autocommit = 0;-- 결과 적용COMMIT;-- 되돌리기ROLLBACK; 02. 책 예제에 맞게 데이터베이스 수정아래 예제는 "업무에 바로 쓰는 SQL 튜닝 - 양바른 지음, 한빛미디어" 책에 .. 2025. 3. 25. 3장 SQL 튜닝의 실행 계획 파헤치기 - (2) 3.2.2.3 table테이블명이나 테이블 알리아스를 표시하는 항목이다. 서브쿼리나 임시 테이블을 만들어서 별도의 작업을 수행할 때는 , 으로 표시한다. 3.2.2.4 partitions데이터가 저장된 논리적인 영역을 표시하는 항목이다. 사전에 정의한 전체 파티션 중 특정 파티션에 선택적으로 접근하는 것이 SQL 성능 측면에서 유리하다. 만약 너무 많은 영역의 파티션에 접근하는 것으로 출력된다면 파티션 정의를 튜닝하는 것이 좋다. 3.2.2.5 type옵티마이저가 테이블의 레코드를 어떤 방식으로 읽었는지 나타낸다. 12개의 값이 있는데 ALL을 제외한 나머지 값은 인덱스를 사용하는 접근 방법이다. 쿼리 성능이 높은 순으로 설명하겠다. 아래로 내려갈수록 성능이 낮아진다고 생각하면 된다. const테이블의 .. 2025. 3. 17. 3장 SQL 튜닝의 실행 계획 파헤치기 - (1) 3.2 실행 계획 수행실행 계획은 쿼리문을 옵티마이저가 비용 기반 최적화를 적용하여 비용이 최소로 소요되는 방법을 찾아내는 것을 의미한다. 3.2.1 기본 실행 계획 수행아래 3가지 방법으로 실행 계획을 확인할 수 있다.EXPLAIN 쿼리문DESCRIBE 쿼리문DESC 쿼리문일반적으로 EXPLAIN을 사용한다. 예를 들어 아래처럼 실행하여 확인할 수 있다. EXPLAIN SELECT * FROM employees WHERE emp_no BETWEEN 100001 AND 200000; 3.2.2 기본 실행 계획 항목 분석실행 계획을 조회하면 나타나는 각 컬럼들의 역할을 알아보자 3.2.2.1 id단위 SELECT 쿼리별로 부여되는 식별자 값이다. 하나의 SELECT 문장 안에서 여러 개의 테이블을 .. 2025. 3. 14. 2장 SQL 튜닝 용어를 직관적으로 이해하기 1. DB 엔진 1.1 스토리지 엔진스토리지 엔진은 데이터를 관리하는 엔진이며 데이터 저장 방식에 따라 엔진이 구분된다. MySQL은 InnoDB 스토리지 엔진을 기본적으로 사용하며 InnoDB는 클러스터링 인덱스 방식으로 데이터를 저장한다. MySQL 엔진이 요청한 데이터를 디스크나 메모리에서 찾아서 MySQL 엔진에게 전달한다. 1.2 MySQL 엔진사용자가 요청한 SQL문을 SQL 파서와 전처리기(Preprocessor)에서 문법 검사를 진행하고 SQL 옵티마이저에 의해 데이터를 가져올 최적의 계획을 세운 후 스토리지 엔진에게 실행 계획대로 데이터를 가져오길 요청한다. 스토리지 엔진으로부터 넘겨받은 데이터에서 불필요한 데이터는 제거하고 가공 및 연산을 진행한다. 그리고 사용자에게 결과 데이터를 전.. 2025. 3. 14. 이전 1 ··· 8 9 10 11 12 13 14 ··· 17 다음