MySQL 에서 NULL 이 색인 에 미 친 영향 에 대해 깊이 설명 합 니 다.
블 로 그 를 많이 봤 고 우리 회사 의 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 은 빈 문자열 보다 더 많은 저장 공간 이 필요 합 니 다.
총결산
이상 은 이 글 의 모든 내용 입 니 다.본 고의 내용 이 여러분 의 학습 이나 업무 에 어느 정도 참고 학습 가 치 를 가지 기 를 바 랍 니 다.여러분 의 저희 에 대한 지지 에 감 사 드 립 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
MySQL에서 JSON 인덱싱 - aarondfrancis사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 말하지만 완전히 정확하지는 않습니다. MySQL로 JSON 열을 인덱싱하는 것은 완전히 가능합니다! 사람들은 종종 MySQL로 JSON을 인덱싱할 수 없다고 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.