다음과 같은 경우 기능적 색인을 만드는 방법.오라클 기능 색인 생성
CREATE INDEX index1 ON table1(MIN(col1));
그것은 오류 아래주고있다 : SQL Error: ORA-00934: group function is not allowed here
Pls는 도움말을!
다음과 같은 경우 기능적 색인을 만드는 방법.오라클 기능 색인 생성
CREATE INDEX index1 ON table1(MIN(col1));
그것은 오류 아래주고있다 : SQL Error: ORA-00934: group function is not allowed here
Pls는 도움말을!
당신이 (내가 생각으로 당신이) 빨리 col1
의 최소 값을 얻을 수있을 싶은 경우에, 당신은 보기 구체화 사용할 수 있습니다
create materialized view table1_mat
refresh on commit
as
select min(col1) min_col1
from table1;
당신은 COL1의 최소 값을 얻기를 다음과 같이 : 최소 값을 선택하는 것은 가속화 할 수있는 반면 그러나
select min_col1 from table1_mat;
주, table1
에 삽입 및 업데이트 시간이 느려질 수 있습니다.를 다시 작성 쿼리
, 그것은 원래 쿼리를 chainging없이 구체화 된 뷰를 사용하는 경우에도 가능 :
alter materiazlied view table1_mat enable query rewrite;
그런 다음
select min(col1) from table1
이 구체화 된 뷰를 사용합니다.
감사! 그러나 create 문에서 작은 수정. 'AS'는'... commit' 후에 나옵니다. :) –
@MohamedSaligh :이 점을 지적 해 주셔서 감사합니다. 현재 명세서에서 수정되었습니다. –
이 같은 쿼리 속도를합니다 col1
에 인덱스를 만들려면 :
SELECT MIN(col1)
FROM table1
는 다음 기능 인덱스가 필요하지 않습니다. 만약 지금 가능 - -
CREATE INDEX index1 ON table1(col1);
MIN(col1)
에 기능 인덱스를 생성 인덱스가 모든 행에 대해 동일한 값 (col1
의 가장 작은 값)가 발생할 것이다 : 그냥 같은 일반 인덱스를 만들 수 있습니다. 그러한 색인은 완전히 쓸모가 없다.
무엇을하려하십니까? 위에 쓰인 색인은 의미가 없습니다. – Thilo
테이블의 모든 행에 현재 최소값을 캐시 하시겠습니까? – Thilo