개발/10줄 TIL

210830 10줄 TIL

냐냐_ 2021. 8. 31. 10:21

어제 기절해서 못 적어 둔 10줄 TIL

잊어버리기 전에 얼른 정리하기!

 

 

 

 

 

[ SQL에서의 인덱스 ]

 

SELECT 성능을 향상시켜주는 INDEX, 잘 알고 잘 써야 한다고.

두 테이블을 조인하여 검색을 할 때, 쿼리 옵티마이저는 대부분

최적의 결과를 내기 위해 인덱스가 있는 테이블부터 스캔한다고 한다.

 

하지만 간혹 인덱스가 없는 테이블부터 스캔하는 것이

성능 면에서 명백히 좋을 때가 있다. (ex. 로우 수가 현저히 적은 경우 등) 

 

이럴 때는 의도적으로 인덱스가 타지 않도록 처리하는 것도 필요하다

속어로 "다리를 부러뜨린다"는 표현을 쓴다고 들었음 (덜덜)

인덱스에 연산을 거는 등 처리를 하면 된다.

 

참고한 포스팅 : 인덱스가 있지만 인덱스를 안 타는 경우 (엘키의 주절주절 블로그)

 

 

 

 

 

[ 확인 ]

 

SELECT * FROM test.reservation
WHERE TRIM(`date`) ='2020-12-21';

SELECT * FROM test.reservation
WHERE `date` ='2020-12-21';

 

첫번째 쿼리는 TRIM()을 통해 인덱스가 타지 않도록 시도했다

두번째 쿼리는 인덱스가 타도록 별다른 처리를 하지 않았다

 

 

execution plan을 확인하면, 첫 번째 경우 인덱스를 타지 않아서

Full Table Scan이 일어난 것을 알 수 있다!

 

 

 

 

 

'개발 > 10줄 TIL' 카테고리의 다른 글

210905 10줄 TIL  (0) 2021.09.06
210901 10줄 TIL  (0) 2021.09.02
210831 10줄 TIL  (0) 2021.09.01
210826 10줄 TIL  (0) 2021.08.27