inflearn logo
강의

講義

知識共有

非専門家でも理解できるMySQL性能最適化入門/実践(SQLチューニング編)

[실습] 인덱스 직접 설정해보기 / 성능 측정해보기 강의에서요.

195

zzzzz

投稿した質問数 192

0

-- 높은 재귀(반복) 횟수를 허용하도록 설정

-- (아래에서 생성할 더미 데이터의 개수와 맞춰서 작성하면 된다.)

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이 실행 안되는게 맞지 않나요?

sql mysql dbms/rdbms query-tuning

回答 1

0

jscode

안녕하세요 zzzzz님! 질문 잘 주셨습니다:D

 

SELECT n + 1 FROM cte WHERE n < 1000000에서

SELECT n + 1이 먼저 실행되지 않고

FROM cte WHERE n < 1000000이 먼저 실행이 됩니다!

그러다보니 n999999이더라도 정상적으로 쿼리가 실행이 된 것입니다.

 

다른 예로, 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