MySQL

테스트를 위한 테이블 생성, 더미 데이터 추가# 테이블 삭제DROP TABLE IF EXISTS users; # 테이블 생성CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT, department VARCHAR(100), salary INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);# 재귀 설정SET SESSION cte_max_recursion_depth = 1000000; # 더미 데이터INSERT INTO users (name, age, department, salary, created_at)WITH RECURSIVE cte ..
# 기존 테이블 삭제DROP TABLE IF EXISTS users; # 테이블 생성CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), department VARCHAR(100), salary INT, created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);# 재귀 설정SET SESSION cte_max_recursion_depth = 1000000; # 더미 데이터INSERT INTO users (name, department, salary, created_at)WITH RECURSIVE cte (n) AS( SELECT 1 UNION ALL SELECT n ..
1. 넓은 범위를 스캔하는 경우 굳이 인덱스를 활용하지 않고 테이블 전체를 조회하는 것이 더 효과적이다.CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT);CREATE INDEX idx_name ON users (name);EXPLAIN SELECT * FROM users ORDER BY name DESC; 2. 인덱스 컬럼을 가공(함수, 산술 등)하면, MySQL은 해당 인덱스를 활용하지 못한다.그래서 인덱스를 적극 활용하기 위해서는 인덱스 컬럼 자체를 가공하지 않고 조회해야 한다.# User000000으로 시작하는 이름을 가진 유저 조회EXPLAIN SELECT * FROM usersWH..
WHERE 문의 부등호, IN, BETWEEN, LIKE 와 같은 곳에 사용되는 컬럼을 인덱스로 사용하면 효율이 좋다.그래서 조회 조건의 날짜를 인덱스로 사용해 튜닝했다.# 기존 테이블 삭제DROP TABLE IF EXISTS users; # 테이블 생성CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), department VARCHAR(100), created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP);# 재귀 설정SET SESSION cte_max_recursion_depth = 1000000; # 더미 생성INSERT INTO users (name, department..
SQL이 어떻게 실행되는지 내부적으로 설명해주는 도구이다.#실행 계획 조회하기EXPLAIN [SQL문]#실행 계획에 대한 자세한 정보 조회하기EXPLAIN ANALYZE [SQL문]# 기존 테이블 삭제DROP TABLE IF EXISTS users;# 테이블 생성CREATE TABLE users ( id INT AUTO_INCREMENT PRIMARY KEY, name VARCHAR(100), age INT);# 데이터 추가INSERT INTO users (name, age) VALUES('박씨', 100),('김씨', 90),('홍씨', 88),('이씨', 66),('조씨', 88),('하씨', 99),('최씨', 77);# 데이터 조회SELECT * FROM users; EXPLAI..
CTE (Common Table Expression)MySQL에서 모든 쿼리가 임시 결과를 생성한다. 이 임시 결과에 이름 붙인 것이 CTE다. 1. cte_max_recursion_depth 설정대규모 데이터 생성하기에 앞서 최대 재귀 횟수를 지정하는 행의 갯수를 설정한다.SET SESSION cte_max_recursion_depth = 10000000; 2. 더미 데이터 삽입 쿼리 실행해당 스크립트를 실행하면 users 테이블에 1,000,000개의 데이터가 자동 생성된다.INSERT INTO users (name, age)#1부터 시작해서 n+1씩 증가, n JSCODE, MySQL 성능 최적화 입문/실전https://inf.run/DzjSq
지구용사
'MySQL' 태그의 글 목록