MySQL 에서 NULL 이 색인 에 미 친 영향 에 대해 깊이 설명 합 니 다.

4682 단어 mysqlnull인덱스
머리말
블 로 그 를 많이 봤 고 우리 회사 의 DBA 를 포함해 MySql 에 null 이 들 어 있 으 면 이 열 을 포함 한 색인 은 무효 라 는 말 도 많이 들 었 습 니 다.
'고성능 MySQL 2 판'과'MySQL 기술 내막-InnoDB 메모리 엔진 2 판'을 뒤 져 보 았 지만 이에 대한 소 개 는 보지 못 했다.그러나 로 컬 에서 시험 해 보 니 null 열 은 색인 을 사용 할 수 있 습 니 다.단일 색인 이 든 연합 색인 이 든 is null 에 만 국한 되 고 is not null 은 색인 을 가지 않 습 니 다.
나중에 공식 문서 에서 설명 을 찾 았 습 니 다.만약 에 특정한 필드 에 null 이 포함 되 어 있다 면 색인 을 사용 할 수 있 습 니 다.주소:https://dev.mysql.com/doc/refman/5.7/en/is-null-optimization.html。
my sql 5.6 과 5.7 에서 모두 가능 하 며,저장 엔진 은 InnoDB 입 니 다.
데 이 터 는 다음 과 같 습 니 다.

1.단일 인덱스
name 열 에 단일 색인 만 들 기:

검색 name 이 null 인 줄:

검색 name'test 0'또는 null 줄:

색인 을 사용 할 수 있 습 니 다.
2.연합 색인
age 와 name 에 연합 색인 추가:

age 가 14 이 고 name 이 null 인 줄 을 조회 합 니 다:

색인 을 똑 같이 사용 한 것 을 발견 할 수 있 습 니 다.
3.기타
MySQL 은 null 이 함 유 된 열 에 색인 을 사용 할 수 있 지만 null 과 다른 데이터 가 색인 에서 같은 것 은 아 닙 니 다.
열 에 비어 있 는 것 을 권장 하지 않 습 니 다.not null 을 제한 하고 0 과'빈 문자열'등 기본 값 을 설정 하 는 것 이 좋 습 니 다.datetime 형식 이 라면'1970-01-01 00:00:00'과 같은 특수 값 으로 설정 할 수 있 습 니 다.
MySQL 에 있어 null 은 특수 한 값 입 니 다.Conceptually,NULL means"a missing unknown value"and it is treated something differently from other values.예 를 들 어=,<,>와 같은 연산 자 를 사용 할 수 없습니다.null 에 대해 산술 연산 을 한 결 과 는 모두 null 입 니 다.count 는 null 줄 등 을 포함 하지 않 습 니 다.null 은 빈 문자열 보다 더 많은 저장 공간 이 필요 합 니 다.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.

좋은 웹페이지 즐겨찾기