반응형
SELECT * FROM SEARCH_TABLE ST
WHERE ST.index IN ( SELECT SST.index
FROM SEARCH_TABLE SST
WHERE SST.index <= 1000 );
MySQL 5.5에서는 인덱스를 설정하더라도 데이터가 많을 경우 쿼리실행 속도가 원하는 속도가 나오질 않음.
(원인 : 풀서칭)
이 경우 JOIN으로 SELECT를 하면 엄청 개선된 쿼리실행 속도를 볼 수 있음.
인덱스를 잡아준다면 원하는 속도의 빠른속도로 쿼리가 수행됨.
SELECT * FROM SEARCH_TABLE ST
JOIN SEARCH_TABLE SST ON ST.index = SST.index
WHERE SST.index <= 1000;
이 부분은 MySQL 5.6 버전부터는 개선이 되어 굳이 JOIN으로 하지 않아도 되지만,
아직도 5.5 이하의 버전도 많이 쓰이고 있기 때문에, 성능이슈가 발생하지 않도록 하기 위해서는 JOIN으로 처리를 하면 좋다고 한다.
프로젝트 시 해당 문제에 직면하여 궁금하던 찰나 어느 굉장한 분께서 잘 정리하셔서 의문이 해결됨.
'Database' 카테고리의 다른 글
[MySQL/mariaDB] 구분자로 잘라서 행으로 반환하자. (feat. json_table()) (1) | 2022.05.20 |
---|---|
ORACLE connection leak 체크 쿼리 (0) | 2021.12.31 |
ORACLE 데이터 복구 ( as of timestamp 활용 ) (0) | 2021.12.31 |
ORACLE 테이블 명세 쿼리 (0) | 2021.12.31 |
MySQL 명세서 출력 쿼리 (0) | 2021.12.30 |
댓글