• MySQL매뉴얼
    • MySQL 5.6 매뉴얼
    • MySQL 5.1 매뉴얼
    • MySQL 5.0 매뉴얼
    • MySQL HA 매뉴얼
  • 기술문서
    • Xtrabackup 구성
    • 메모리 사용량 모니터링
  • 라이선스
  • 온라인문의
  • 회사소개
  • → 목 록 (MySQL5.6 한글메뉴얼) [close]
  • 1. MySQL 5.6 새로운 기능
  • 2. MySQL 설치 및 업그레이드
  • 3. MySQL Tutorial
  • 4. MySQL 프로그램
  • 5. MySQL 서버관리
  • 6. 보안
  • 7. 백업 및 복구
  • 8. 최적화
  • 1. 최적화 개요
    2. SQL문 최적화
    1. SELECT문 최적화
    1. SELECT문 속도
    2. MySQL WHERE절 최적화 방법
    3. range 최적화
    4. 인덱스 병합 최적화
    5. 엔진 조건문 푸시 다운 최적화
    6. 인덱스 조건문 푸시 다운 최적화
    7. 인덱스 확장의 사용
    8. IS NULL 최적화
    9. LEFT JOIN과 RIGHT JOIN 최적화
    10. Nested Loop 조인 알고리즘
    11. 중첩 된 결합의 최적화
    12. 외부 조인의 단순화
    13. Multi-Range Read 최적화
    14. Block Nested Loop 조인과 Batched Key Access 결합
    15. ORDER BY 최적화
    16. GROUP BY 최적화
    17. DISTINCT 최적화
    18. 서브 쿼리의 최적화
    19. LIMIT 쿼리의 최적화
    20. 풀 테이블 스캔을 피하는 방법
    2. DML문 최적화
    3. 데이터베이스 권한 최적화
    4. INFORMATION_SCHEMA 쿼리 최적화
    5. 기타 최적화 Tips
    3. 최적화 및 인덱스
    4. 데이터베이스 구조의 최적화
    5. InnoDB 테이블의 최적화
    6. MyISAM 테이블의 최적화
    7. MEMORY 테이블 최적화
    8. 쿼리 실행 계획의 이해
    9. 버퍼링과 캐시
    10. 잠금 작업의 최적화
    11. MySQL 서버의 최적화
    12. 성능 측정
  • 9. Language Structure(언어구조)
  • 10. Character Sets(Globalization)
  • 11. 데이터형(Data Types)
  • 12. 함수와 연산자
  • 13. SQL 문법
  • 14. InnoDB 스토리지 엔진
  • 15. 기타 스토리지 엔진
  • 16. 고가용성 및 확장성
  • 17. 리플리케이션
  • 18. MySQL Cluster
  • 19. 파티셔닝
  • 20. Stored Programs and Views
  • 21. INFORMATION_SCHEMA
  • 22. PERFORMANCE SCHEMA
  • 23. 컨넥터 및 API
  • 24. MySQL 확장
  • 25. MySQL Enterprise Edition
  • 26. MySQL Workbench
  • 27. 제약 및 제한
  • 28. MySQL 5.7 새로운 기능

8.2.1.8 IS NULL 최적화

MySQL은 col_name = constant_value 에 사용할 수있는 동일한 최적화를 col_name IS NULL 에 대해서도 실행할 수 있습니다. 예를 들어, MySQL은 인덱스와 범위를 사용하여 IS NULL 을 포함 NULL 을 찾을 수 있습니다.

예 :

 SELECT * FROM tbl_name WHERE key_col IS NULL;

 SELECT * FROM tbl_name WHERE key_col <=> NULL;

 SELECT * FROM tbl_name
   WHERE key_col = const1 OR key_col = const2 OR key_col IS NULL;

WHERE 절에 NOT NULL 로 선언 된 컬럼 col_name IS NULL 조건이 포함되어있는 경우, 그 수식은 최적화에 의해 제거됩니다. 이 최적화는 어쨌든 컬럼에서 NULL 이 생성 될 가능성이있는 경우에는 발생하지 않습니다. 예를 들어, LEFT JOIN 의 오른쪽 테이블에서 검색되는 경우입니다.

MySQL은 해결 된 하위 쿼리 일반적인 형태이다 col_name = expr OR col_name IS NULL 의 조합을 최적화 할 수 있습니다. 이 최적화가 사용 된 경우 EXPLAIN 에서 ref_or_null 로 표시됩니다.

이 최적화는 모든 키 부분에 대해서 하나의 IS NULL 을 처리 할 수 있습니다.

테이블 t2 의 컬럼 a 와 b 에 인덱스가 있다고하여, 최적화 된 쿼리의 몇 가지 예 :

 SELECT * FROM t1 WHERE t1.a = expr OR T1.A IS NULL;

 SELECT * FROM t1, t2 WHERE t1.a = t2.a OR t2.a IS NULL;

 SELECT * FROM t1, t2
   WHERE (t1.a = t2.a OR t2.a IS NULL) AND t2.b = t1.b;

 SELECT * FROM t1, t2
   WHERE t1.a = t2.a AND (t2.b = t1.b OR t2.b IS NULL);

 SELECT * FROM t1, t2
   WHERE (t1.a = t2.a AND t2.a IS NULL AND ...)
   OR (t1.a = t2.a AND t2.a IS NULL AND ...);

ref_or_null 먼저 참조 키 읽 다음 NULL 키 값이있는 행의 개별 검색을 실행합니다.

이 최적화는 하나의 IS NULL 레벨 밖에 처리 할 수 없습니다. 다음의 쿼리는 MySQL은 식 (t1.a=t2.a AND t2.a IS NULL) 에 대해서만 키 조회를 사용하여 b 에 대해서는 키 파트를 사용할 수 없습니다.

 SELECT * FROM t1, t2
   WHERE (t1.a = t2.a AND t2.a IS NULL)
   OR (t1.b = t2.b AND t2.b IS NULL);


서울시 강남구 영동대로 602 6층
TEL: 02-6061-0006  /  E: csr@mysqlkorea.com
주식회사 이노클러스터  등록번호 : 727-86-02261
Copyright © innocluster Co. ltd. all rights reserved