2010-05-11 4 views
0

동일한 인라인 뷰를 사용하여 3 개의 개별 sqls를 실행하는 자바 프로그램이 있습니다 - sqls가 실행될 때 인라인 뷰를 빌드 할 때마다 약 20 분이 소요됩니다 - 캐시하거나 재사용 할 수있는 방법이 있습니까? - 임시 테이블 솔루션을 피하려고합니다. 왜냐하면 자바 프로그램은 스키마 객체를 생성 할 수있는 권한을 가지고 있지 않기 때문에 plsql에 위임되어야하기 때문입니다. ps : oracle 10g오라클 인라인 뷰는 임시 테이블을 만드는 대신 java 문에서 사용할 수 있습니다

답변

0

오라클은 결과를 캐시하면 최선을 다할 것입니다. 그러나 당신이 정말로 원하면 임시 테이블을 가질 수 있으며, 그것은 상당히 작습니다. 패키지를 사용하는 경우 처음으로 호출 할 때 임시 테이블을 만들고 다른 두 번 캐시 된 데이터를 사용할 수 있습니다. 패키지 변수를 시험해보고 원하는대로 수행하는지 확인하십시오.

0

오라클 임시 테이블을 즉시 만들어서는 안됩니다. 문서 here. 임시 테이블을 사용하여이 테이블을 한 번만 만들고 프로 시저에서 사용하면됩니다.

또 다른 옵션은 구체화 된보기 일 수 있습니다. 문서 here 구체화 된보기는 요청시 또는 스케줄에 따라 새로 고쳐집니다.

정보를 제공하면 어떤 상황에 더 잘 맞는지 알 수 없습니다.

+0

은 인라인 뷰로 전환하기 전에 비행 임시 테이블을 만들고 삭제하는 절차를 사용하고있었습니다. 전환은 주로 팀 개발 환경에서 하나의 DB를 공유하는 문제로 인한 것입니다! 이것은 프로그램이 다른 데이터 범위에 대해 10 개의 병렬 스레드로 실행된다는 것입니다. 이제는 개발이 완료되면 임시 테이블로 다시 전환 할 계획이며 현재는 성능이 11g이 될 수 있습니다. RESULT_CACHE 힌트가 대답입니까? – prabhackar

+0

oracle에서 글로벌 임시 테이블을 생성 및 삭제하면 문제가 발생할 수 있습니다. 당신이 그들을 사용하는 경우 데이터베이스에서 그들을 남겨주세요. 이렇게하면 객체를 생성해야하는 문제가 발생하지 않습니다. 그리고 그 안에있는 모든 데이터는 세션에 따라 다르며 트랜잭션이나 세션이 끝날 때 잘립니다. 그래서 그들을 버릴 필요가 없습니다. –