일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 제5정규형
- order-by
- 배타서브타입
- 요구사항명세서
- 데이터통합
- 제1정규형
- 제4정규형
- Workbench
- 제2정규형
- 완전서브타입
- 인덱스
- 더미데이터
- 중복서브타입
- 샘플데이터
- SQL
- group-by
- 크롬원격데스크톱
- 불완전서브타입
- 함수종속
- 서브타입
- vue3
- 워크벤치
- 공통코드
- 정규형
- index
- bc정규형
- mysql
- 실행계획
- 제3정규형
- 물리모델
- Today
- Total
목록전체 글 (57)
domsam - IT 기술 블로그
-- 고객 테이블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..
아래 접은글로 되어있는 내용을 보기 전에 각 예제의 내용을 확인하고 본인이 생각하는 쿼리문을 먼저 작성해 보세요. 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_..
1. 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; 2. 예제 맞도록 employee 데이터베이스 세팅아래 예제는 "업무에 바로 쓰는 SQL 튜닝 - 양바른 지음, 한빛미디어..

3.2.2.3 table테이블명이나 테이블 알리아스를 표시하는 항목이다. 서브쿼리나 임시 테이블을 만들어서 별도의 작업을 수행할 때는 , 으로 표시한다. 3.2.2.4 partitions데이터가 저장된 논리적인 영역을 표시하는 항목이다. 사전에 정의한 전체 파티션 중 특정 파티션에 선택적으로 접근하는 것이 SQL 성능 측면에서 유리하다. 만약 너무 많은 영역의 파티션에 접근하는 것으로 출력된다면 파티션 정의를 튜닝하는 것이 좋다. 3.2.2.5 type옵티마이저가 테이블의 레코드를 어떤 방식으로 읽었는지 나타낸다. 12개의 값이 있는데 ALL을 제외한 나머지 값은 인덱스를 사용하는 접근 방법이다. const테이블의 레코드 건수와 관계없이 쿼리가 PK나 유니크 인덱스를 이용하는 WHERE 조건절을 가지고..

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 문장 안에서 여러 개의 테이블을 ..

1. DB 엔진 1.1 스토리지 엔진스토리지 엔진은 데이터를 관리하는 엔진이며 데이터 저장 방식에 따라 엔진이 구분된다. MySQL은 InnoDB 스토리지 엔진을 기본적으로 사용하며 InnoDB는 클러스터링 인덱스 방식으로 데이터를 저장한다. MySQL 엔진이 요청한 데이터를 디스크나 메모리에서 찾아서 MySQL 엔진에게 전달한다. 1.2 MySQL 엔진사용자가 요청한 SQL문을 SQL 파서와 전처리기(Preprocessor)에서 문법 검사를 진행하고 SQL 옵티마이저에 의해 데이터를 가져올 최적의 계획을 세운 후 스토리지 엔진에게 실행 계획대로 데이터를 가져오길 요청한다. 스토리지 엔진으로부터 넘겨받은 데이터에서 불필요한 데이터는 제거하고 가공 및 연산을 진행한다. 그리고 사용자에게 결과 데이터를 전..