Oracle 복합 색인 과 빈 값 의 색인 사용 문제 소결
select A,min(B) from table group by A;--A,B not null ,A ,B 。-- IX_TEST(A,B)
따라서 수 동 테스트,환경 은 Oracle 자체 가 가지 고 있 는 scott 사용자 의 emp 표를 사용 합 니 다.1.먼저 다음 문장의 실행 계획 을 봅 니 다(이 때 표 는 메 인 키 색인 만 있 습 니 다).
2.IX 추가TEST(deptno,comm)후 실행 계획 보기:
발견 은 여전히 전체 시계 스 캔 이다.
3.deptno 열 에 비 어 있 는 제약 조건 을 추가 한 후 실행 계획 을 다시 봅 니 다.
4.정리:
Btree 인덱스 는 빈 값 을 저장 하지 않 습 니 다.이것 은 모든 Btree 인덱스 를 사용 하 는 데이터베이스 의 공통점 입 니 다.
이 예 에서 우 리 는 deptno,comm 의 일치 색인 을 만 들 었 습 니 다.deptno 에 빈 제약 이 없 으 면 어떤 record 가 색인 에 나타 나 지 않 는 다 는 것 을 설명 합 니 다.이 때 min(comm)을 찾 으 려 면 표 로 돌아 가 야 deptno 가 null 인 줄 에 comm 값 이 있 는 지 확인 할 수 있 습 니 다.이 때 유 틸 리 티 는 전체 표 스 캔 이 색인 재 회 표 보다 더 합 리 적 이 라 고 생각 하기 때문에 전체 표 스 캔 을 선택 하 십시오.
비어 있 지 않 은 제약 을 추가 하면 deptno 가 비어 있 을 수 없 기 때문에 색인 의 key 값 은 표 총 줄 수 와 같 습 니 다.다른 열 comm 는 비어 있어 도 min()의 값 에 영향 을 주지 않 습 니 다.색인 을 스 캔 하면 필요 한 결 과 를 얻 을 수 있 습 니 다.이때 최적화 기 는 색인 스 캔 을 선택 하 십시오.
한편,Mysql 에 서 는 복합 색인 첫 번 째 열 에 비 어 있 는 제약 이 있 든 없 든 색인 을 사용 합 니 다.deptno 가 null 인 경우 전체 부분 이 한 그룹 에서 min(comm)을 가 져 옵 니 다.Mysql 의 BTREE 색인 은 Oracle 과 다 르 기 때문에 첫 번 째 열 이 비어 있 으 면 되 돌아 오지 않 아 도 됩 니 다.
마지막:Oracle 의 열 은 비 공 제약 을 추가 할 수 있 습 니 다.반드시 추가 해 야 합 니 다.
총결산
위 에서 말 한 것 은 소 편 이 소개 한 Oracle 복합 색인 과 빈 값 의 색인 사용 문제 소결 입 니 다.여러분 에 게 도움 이 되 기 를 바 랍 니 다.궁금 한 점 이 있 으 시 면 메 시 지 를 남 겨 주세요.소 편 은 제때에 답 해 드 리 겠 습 니 다.여기 서도 저희 사이트 에 대한 여러분 의 지지 에 감 사 드 립 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
activemq 5.5 의 입문 은 설치, 시작, 데이터베이스 지속 화 를 포함한다Apache ActiveMQ 5.5.0 은 주로 유지보수 버 전 으로 130 개가 넘 는 문 제 를 복 구 했 으 며 대부분 bug 와 개선 이 었 다. Improved performance for offline d...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.