oracle 인덱스 실패 이유: 1. WHERE 절을 사용하지 않음 2. "IS NULL" 및 "IS NOT NULL" 사용 3. WHERE 절에 함수 사용 5. 퍼지 쿼리 사용 WHERE 절의 불평등 연산 6. 일치하지 않는 데이터 유형 등을 비교합니다.
이 튜토리얼의 운영 환경: Windows 10 시스템, Oracle 11g 버전, Dell G3 컴퓨터.
Oracle 인덱스의 목표는 전체 테이블 스캔을 방지하고 쿼리 효율성을 높이는 것이지만 때로는 역효과를 낳을 때도 있습니다.
예를 들어, 테이블에 수백만 개의 데이터가 있고 특정 필드에 인덱스를 추가했지만 쿼리 성능이 향상되지 않는 경우 이는 Oracle 인덱스의 오류 때문일 수 있습니다. Oracle 인덱스에는 몇 가지 제한 사항이 있습니다. 이러한 인덱스 제한 사항을 위반하면 인덱스를 추가했더라도 Oracle은 인덱스를 추가하지 않은 것에 비해 쿼리 성능이 향상되지 않을 수 있습니다. 데이터베이스에 인덱스를 유지하는 시스템 오버헤드로 인해 성능이 저하됩니다. 다음은 Oracle 인덱스 실패를 유발할 수 있는 7가지 제약 조건을 요약한 것입니다.
1. WHERE 절 없음
2. IS NULL 및 IS NOT NULL을 사용하세요.
SELECT ... FROM emp WHERE comm IS NULL은 WHERE 절입니다.
에서 함수 사용 함수 기반 인덱스를 사용하지 않는 경우 where 절의 인덱스 열에 함수를 사용하면 최적화 프로그램이 이러한 인덱스를 무시하게 됩니다. 예를 들어
select * from staff where trunc(birthdate) = '01-MAY-82';
select * from staff where birthdate < (to_date('01-MAY-82') + 0.9999);
4. 퍼지 쿼리에는 LIKE '%T'를 사용하세요.
5. WHERE 절에 불평등 연산을 사용하세요.
불평등 연산에는 <>, !=, NOT colum >= ? , NOT colum <= ?
이 제한은 OR로 대체될 수 있습니다. 예: colum <> 0 ===> colum>0 OR colum<06.
SELECT emp_id, emp_m, salary_q ... FROM emp WHERE job='manager' AND deptno>10
7. 일치하지 않는 데이터 유형 비교
dept_id는 varchar2 필드이지만 다음 명령문은 전체 테이블 스캔을 수행합니다.
select * from dept where dept_id = 900198;
select * from dept where dept_id = '900198';
Oracle Video Tutorial
"위 내용은 Oracle은 어떻게 인덱스를 무효화합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!