creationData
에 의해 당신이 creationDate
을 의미하는 것이 정말 바랍니다. 모든
첫째, logLevel
및 creationData
에 인덱스를이하는 것만으로는 충분하지 않습니다. 내가 처음 creationData을 넣어
CREATE INDEX i_log_1 ON log (creationData, logLevel);
참고 :이 별도의 인덱스가있는 경우, 오라클 만 사용할 수 있습니다 1. 당신이 필요한 것은 두 필드에 단일 인덱스입니다. 이 방법으로 WHERE 절에만 해당 필드를 넣으면 인덱스를 계속 사용할 수 있습니다. (단지 날짜에 대한 필터링은 단순한 로그 수준에서의 시나리오보다 더 가능성이 높습니다.)
그런 다음 테이블이 데이터로 채워 졌는지 확인하십시오 (프로덕션에서 사용할 데이터만큼). 테이블의 통계를 새로 고치십시오.
테이블이 큰 경우
는 (천 백 적어도 몇 행), 통계를 새로 고치려면 다음 코드를 사용 : 테이블이 작은 경우, 사용
DECLARE
l_ownname VARCHAR2(255) := 'owner'; -- Owner (schema) of table to analyze
l_tabname VARCHAR2(255) := 'log'; -- Table to analyze
l_estimate_percent NUMBER(3) := 5; -- Percentage of rows to estimate (NULL means compute)
BEGIN
dbms_stats.gather_table_stats (
ownname => l_ownname ,
tabname => l_tabname,
estimate_percent => l_estimate_percent,
method_opt => 'FOR ALL INDEXED COLUMNS',
cascade => TRUE
);
END;
그렇지 않으면
ANALYZE TABLE log COMPUTE STATISTICS FOR ALL INDEXED COLUMNS;
또한 테이블이 커지면 creationDate 열의 범위로 파티션을 분할하는 것이 좋습니다. 자세한 사항은 다음 링크를 참조하십시오 : '계획을 설명하는'무엇을
이 쿼리에 대해 말해? –