Oacle 최적화: IS NULL 의 최적화 와 IS NOT NULL 의 최적화
5717 단어 데이터 뱅 크
최적화 방법: nvl (필드 i, j) 을 통 해 필드 i 에서 빈 데 이 터 를 j 로 전환 시 켜 색인 을 정상적으로 사용 합 니 다. 구체 적 으로 조건 i is null 을 j = nvl (i, j) 로 전환 합 니 다.데이터 양 이 많 을 때 전환 is null 은 Oacle 버 전에 서 뚜렷하게 향상 되 었 습 니 다. 주의: 사용 할 때 필드 i 의 데이터 가 j 를 포함 하지 않도록 해 야 합 니 다!결함: 필드 i 는 j 값 의 데 이 터 를 가 질 수 없습니다. 다른 방법 은 null 을 색인 에 포함 시 키 는 것 입 니 다.
함수 소개: nvl (a, b, c,...) a 가 비어 있 을 때 b 를 취하 고 b 가 비어 있 을 때 c 를 취하 여 유추 합 니 다.
최적화 예시
-- nvl ( , )
select*from tab_i t where 1=nvl(t.col_x,1);
-- t.col_x 1
--select*from tab_i t where t.col_x is null;
--
create index idx_col_x on tab_i(decode(col_x,null,1));
select*from tab_i t where decode(t.col_x,null,1)=1;
IS NOT NULL 최적화
최적화 방법 결과 집합 은 j = nvl (i, j) 을 포함 하지 않 으 면 되 고 방식 이 다양 합 니 다. 일반적인 상황 에서 not exists 를 사용 하거나 크기 를 비교 할 수 있 습 니 다. 이 두 가지 효율 은 보통 비교 길이 보다 높 습 니 다.
최적화 예시
select*from tab_i t where not exists
(select 1 form tab_i i where 1=nvl(i.col_x,1));
--11g not in not exists , not in
-- t.col_x 1
--select*from tab_i t where t.col_x is not null;
크기 비교
-- t.col_x 1
select*from tab_i t where 1<nvl(t.col_x,1);
-- t.col_x 1
select*from tab_i t where 1>nvl(t.col_x,1);
-- , IS NOT NULL
select*from tab_i t where t.col_x>1;
길이
-- t.col_x 1
select*from tab_i t where 2<=length(nvl(t.col_x,1));
-- length , , length
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
nginx websocket ip_해시 규칙프로젝트 를 다운로드 한 후 서로 다른 네트워크 에 각각 이 demo 프로젝트 를 배치 합 니 다. 프로젝트 에서 환경 변수 에 따라 시스템 변 수 를 설정 합 니 다. spring.profiles.active=de...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.