MySQL8에서 자주 사용하는 Hint 작업

2690 단어 MySQL
문서 목록
  • 1, Optimizer Hints
  • 2, Index Hints
  • Optimizer Hints
    프롬프트 이름
    묘사
    적용 범위
    BKA, NO_BKA
    BKA 조인 처리에 영향을 미침
    Query block,table
    BNL, NO_BNL
    MySQL 8.0.20 이전 버전: 블록 중첩 순환에 영향을 주는 연결 처리,MySQL 8.0.18 및 더 높은 버전: 해시 연결 최적화에도 영향을 미친다.MySQL 8.0.20 이상: 해시 조인 최적화에만 영향
    Query block,table
    DERIVED_CONDITION_PUSHDOWN, NO_DERIVED_CONDITION_PUSHDOWN
    물화 파생 테이블 사용 또는 파생 조건 무시 최적화 (MySQL 8.0.22에 추가)
    Query block,table
    GROUP_INDEX, NO_GROUP_INDEX
    GROUP BY 작업에서 색인 검색을 위해 지정된 색인을 사용하거나 무시(MySQL 8.0.20에 추가)
    Index
    HASH_JOIN, NO_HASH_JOIN
    해시 조인 최적화에 영향을 미침(MySQL 8.0.18에만 해당)
    Query block,table
    INDEX, NO_INDEX
    충당하는 그룹 JOININDEX, GROUP_INDEX 및 ORDERINDEX 또는 그룹 NOJOIN_INDEX, NO_GROUP_INDEX 및 NOORDER_INDEX(MySQL 8.0.20)
    Index
    INDEX_MERGE, NO_INDEX_MERGE
    인덱스 통합 최적화에 영향
    table,Index
    JOIN_FIXED_ORDER
    FROM 자문에 지정된 테이블 순서를 연결 순서로 사용
    Query block
    JOIN_INDEX, NO_JOIN_INDEX
    모든 접근 방법에 지정한 인덱스를 사용하거나 무시합니다. (MySQL 8.0.20에 추가)
    Index
    JOIN_ORDER
    프롬프트에서 지정한 테이블 순서를 연결 순서로 사용
    Query block
    JOIN_PREFIX
    알림에 지정한 테이블 순서를 연결 순서의 첫 번째 테이블에 사용합니다
    Query block
    JOIN_SUFFIX
    프롬프트에서 지정한 테이블 순서를 연결 순서의 마지막 테이블에 사용
    Query block
    MAX_EXECUTION_TIME
    문장 실행 시간 제한
    Global
    MERGE,NO_MERGE
    외부 Query Block에 파생 탭/보기 병합
    table
    MRR, NO_MRR
    다양한 읽기 최적화에 영향
    table,Index
    NO_ICP
    색인 조건 하추식 최적화에 영향을 미치다
    table,Global
    NO_RANGE_OPTIMIZATION
    영향 범위 최적화
    table,Index
    ORDER_INDEX,NO_ORDER_INDEX
    지정된 하나 이상의 색인을 사용하여 행을 정렬하거나 무시(MySQL 8.0.20에 추가)
    Index
    QB_NAME
    Query Block에 이름 할당
    Query block
    RESOURCE_GROUP
    문장 실행 중 자원 그룹 설정하기
    Global
    SEMIJOIN, NO_SEMIJOIN
    반접속 전략에 영향을 미치기;MySQL 8.0.17부터 anti-joins에도 적용
    Query block
    SKIP_SCAN, NO_SKIP_SCAN
    스캔 최적화 건너뛰기 영향
    table,Index
    SET_VAR
    문이 실행되는 동안 변수 설정하기
    Global
    SUBQUERY
    물화에 영향을 미치는 IN ~ EXISTS 하위 조회 설정에 대한 대책 검토
    Query block
    hint 사용법
    #    
    /*+ BKA(t1) */
    /*+ BNL(t1, t2) */
    /*+ NO_RANGE_OPTIMIZATION(t4 PRIMARY) */
    /*+ QB_NAME(qb2) */
    SELECT /*+ ... */ ...
    INSERT /*+ ... */ ...
    REPLACE /*+ ... */ ...
    UPDATE /*+ ... */ ...
    DELETE /*+ ... */ ...
    
    #  hint  
    SELECT /*+ BNL(t1) BKA(t2) */ ...
    

    2. Index Hints
    구문
    tbl_name [[AS] alias] [index_hint_list]
    
    index_hint_list:
        index_hint [index_hint] ...
    
    index_hint:
        USE {INDEX|KEY}
          [FOR {JOIN|ORDER BY|GROUP BY}] ([index_list])
      | {IGNORE|FORCE} {INDEX|KEY}
          [FOR {JOIN|ORDER BY|GROUP BY}] (index_list)
    
    index_list:
        index_name [, index_name] ...
    

    좋은 웹페이지 즐겨찾기