[실습] 인덱스 직접 설정해보기 / 성능 측정해보기 강의에서요.
195
投稿した質問数 192
-- 높은 재귀(반복) 횟수를 허용하도록 설정
-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.)
SET SESSION cte_max_recursion_depth = 1000000;
-- 더미 데이터 삽입 쿼리
INSERT INTO users (name, age)
WITH RECURSIVE cte (n) AS
(
SELECT 1
UNION ALL
SELECT n + 1 FROM cte WHERE n < 1000000 -- 생성하고 싶은 더미 데이터의 개수
)
SELECT
CONCAT('User', LPAD(n, 7, '0')), -- 'User' 다음에 7자리 숫자로 구성된 이름 생성
FLOOR(1 + RAND() * 1000) AS age -- 1부터 1000 사이의 랜덤 값으로 나이 생성
FROM cte;
-- 잘 생성됐는 지 확인
SELECT COUNT(*) FROM users;
SELECT n + 1 FROM cte WHERE n < 1000000 -- 생성하고 싶은 더미 데이터의 개수
SELECT n + 1 이 먼저 실행되고 FROM cte WHERE n < 1000000 이부분이 실행되니까.
n이 999999까지 실행되고 n + 1 =1000000 이니까 FROM cte WHERE n < 1000000이부분에 걸려서 1000000이 실행 안되는게 맞지 않나요?
回答 1
0
안녕하세요 zzzzz님! 질문 잘 주셨습니다:D
SELECT n + 1 FROM cte WHERE n < 1000000에서
SELECT n + 1이 먼저 실행되지 않고
FROM cte WHERE n < 1000000이 먼저 실행이 됩니다!
그러다보니 n이 999999이더라도 정상적으로 쿼리가 실행이 된 것입니다.
다른 예로, SELECT age + 10, name FROM users WHERE age < 20;의 쿼리를 생각해봅시다.
여기서 이 쿼리가 실행될 때는 users 테이블에서 age < 20를 만족시키는 데이터를 먼저 뽑은 뒤에
그 뒤에 age + 10의 값과 name의 컬럼을 조회해서 출력합니다.
위 설명 중에서 이해 안 되시는 점 있으시면 댓글 남겨주세요~~
큰 범위 조회 시 EXPLAIN의 rows 값이 정확하지 않은 이유가 궁금합니다.
0
34
2
쿼리 결과 그리드에서 TYPE, POSSIBLE_KEYS 다릅니다
0
80
3
강의 내용을 블로그에 정리해도 괜찮을까요?
1
120
2
여러 테이블 조인시 where 절이 필요한가? 에 대해 질문있습니다.
0
143
2
풀 인덱스 스캔 질문있습니다.
0
119
2
멀티컬럼인덱스 질문있습니다.
0
121
2
쿼리 튜닝 관련 질문 (limit)
0
119
1
페이지기반 페이지네이션 쿼리를 최적화하고 싶습니다.
0
168
2
측정 시간 차이
0
200
2
커버링 인덱스(Covering Index)강의에서 질문이있습니다.
0
183
2
한 번에 너무 많은 데이터를 조회하는 SQL문 튜닝하기 질문입니다
0
258
3
ORDER BY 튜닝관련 문의
0
200
2
강의 질문 있습니다
0
118
2
인덱스 많은 테이블에서 데이터 많아질 수록 insert 속도 증가
0
442
3
MariaDB 사용 시 EXPLAIN ANALYZE 이용 불가 문의
1
590
2
SQL 튜닝에 대한 사례나 Best Practice 등을 모은 자료를 알려주실 수 있나요?
0
320
2
혹시 심화 수업은 계획이 없으신가요..?
0
295
1
jpa쿼리튜닝 팁이 궁금합니다.!
0
448
1
특정 부서에서 최대 연봉을 가진 사용자 조회 sql 쿼리 질문
4
246
1
created_at 에 index 거는것과 지속적인 데이터 증가
0
424
2
WHERE A OR B 에서 인덱스 걸기
0
377
2
질문이있습니다.
1
311
1
테이블에 기본키가 없을때
0
381
1
질문있어요!!!
1
214
1

