Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 31 |
Tags
- Interceptor
- OOP
- 관점지향프로그래밍
- 스프링 시큐리티
- Spring Security
- http
- Spring
- Filter
- SQL
- java
- aop
- network
- 스프링부트
- mybatis
- 트랜잭션
- 자바
- exception
- spring boot
- 인터셉터
- aspect
- RestControllerAdvice
- git
- proxy pattern
- response
- 스프링
- Redis
- MYSQL
- 디자인패턴
- request
- 객체지향프로그래밍
Archives
- Today
- Total
장쫄깃 기술블로그
[MySQL] STRAIGHT_JOIN 본문
728x90
STRAIGHT_JOIN
MySQL에는 STRAIGHT_JOIN 이라고 하는 JOIN이 있다.
STRAIGHT_JOIN is similar to JOIN, except that the left table is always read before the right table. This can be used for those (few) cases for which the join optimizer processes the tables in a suboptimal order.
왼쪽 테이블을 강제로 먼저 읽는 JOIN이라고 보면 될 것 같다.
간혹 explain을 이용하여 쿼리 실행계획을 보면 index가 적용되지 않고 쿼리 타입이 ALL로 실행되는 경우가 있다. 이는 MySQL의 옵티마이저(optimizer)가 자체적으로 쿼리 성능 향상을 위해 JOIN 순서를 바꾸기 때문에 생기는 문제이다. 대부분 이러한 성능 향상이 효과가 있지만, 오히려 효과가 떨어지는 순간이 있다.
이 때, JOIN 순서를 강제로 설정하면 내가 원하는 실행 계획대로 쿼리가 실행하게 된다.
SELECT
*
FROM A
STRAIGHT_JOIN B ON A.idx = B.idx
;
혹은 아래처럼 사용하면 모든 JOIN이 STRAIGHT_JOIN 으로 동작한다.
SELECT
STRAIGHT_JOIN *
FROM A
JOIN B ON A.idx = B.idx
;
728x90
'DataBase > MySQL' 카테고리의 다른 글
[MySQL] INSERT IGNORE, REPLACE INTO (0) | 2022.09.02 |
---|---|
[MySQL] DUPLICATE ON KEY UPDATE (0) | 2022.09.02 |
[MySQL] DB Transaction(트랜잭션) 이란? (0) | 2022.04.14 |