728x90
- 고급 최적화
- 옵티마이저 옵션은 크게 조인 관련된 옵티마이저 옵션과, 옵티마이저 스위치로 구분할 수 있다.
- 옵티마이저 스위치 옵션
- MRR과 배치 키 엑세스(mrr & batched_key_access)
- 블록 네스티드 루프 조인
- 인덱스 컨디션 푸시다운
- 인덱스 확장
- 인덱스 머지
- 인덱스 머지 - 교집합
- 인덱스 머지 - 합집합
- 인덱스 머지 - 정렬 후 합집합
- 세미 조인
- 테이블 풀-아웃
- 퍼스트 매치
- 루스 스캔
- 구체화
- 중복제거
- 컨디션 팬아웃
- 파생 테이블 머지
- 인비저블 인덱스
- 스킵 스캔
- 해시 조인
- 인덱스 정렬 선호
- 조인 최적화 알고리즘
- Exhaustive 검색 알고리즘
- 쿼리 힌트
- 인덱스 힌트와 옵티마이저 힌트로 나눌 수 있다.
- 인덱스 힌트
- straight_join, use index 등을 포함한 인덱스 힌트들은 모두 mysql 서버에 옵티마이저 힌트가 도입되기 전에 사용되던 기능들이다.
- straight_join
- 여러개의 테이블이 조인되는 경우 조인 순서를 고정하는 역할을 한다.
- straight_join
- use index / force index / ignore index
- use index
- 옵티마이저에게 특정 테이블의 인덱스를 사용하도록 권장 하는 힌트이다.
- force index
- use index 보다 옵티마이저에게 미치는 영향이 더 강한 힌트이다. use index 랑 다른 점은 없다.
- ignore index
- use index 나 forece index와는 반대로 특정 인덱스를 사용하지 못하게 하는 용도로 사용한다.
- use index
- sql_calc_found_rows
- limit을 만족하는 수만큼 레코드를 찾았다고 하더라도 fount_rows() 함수를 사용하면 끝까지 검색을 수행해 limit을 제외한 조건을 만족하는 레코드가 전체 몇 건이었는지를 알아낼 수 있다.
- 사용하지 않는것을 추천한다.
- straight_join, use index 등을 포함한 인덱스 힌트들은 모두 mysql 서버에 옵티마이저 힌트가 도입되기 전에 사용되던 기능들이다.
- 옵티마이저 힌트
- 옵티마이저 힌트는 영향 범위에 따라 다음 4개 그룹으로 나누어 볼 수 있다.
- 인덱스: 특정 인덱스의 이름을 사용할 수 있는 옵티마이저 힌트
- 테이블: 특정 테이블의 이름을 사용할 수 있는 옵티마이저 힌트
- 쿼리 블록: 특정 쿼리 블록에 사용할 수 있는 옵티마이저 힌트로서, 특정 쿼리 블록의 이름을 명시하는 것이 아니라 힌트가 명시된 쿼리 블록에 대해서만 영향을 미치는 옵티마이저 힌트
- 글로벌(쿼리 전체): 전체 쿼리에 대해서 영향을 미치는 힌트
- 옵티마이저 힌트는 영향 범위에 따라 다음 4개 그룹으로 나누어 볼 수 있다.
728x90
'공부 > Mysql' 카테고리의 다른 글
[RealMysql 8.0] 실행 계획 10 ~ 1편 끝 (0) | 2023.02.27 |
---|---|
[RealMysql 8.0] 옵티마지어와 힌트 9 ~ 9.2 (0) | 2023.02.26 |
[RealMysql 8.0] 외래키 8.10 ~ 8.10.2 (0) | 2023.02.26 |
[RealMysql 8.0] 인덱스 8.3.5 ~ 8.9.2 (0) | 2023.02.07 |
[RealMysql 8.0] 인덱스 8.3.4 ~ 8.3.4.4 (0) | 2023.02.07 |
댓글