개인적으로, 나는 최적화 힌트 (나는 우리의 DBA에 이러한 검은 마법을 남겨) 바이올린하지 않도록 가능한 한 많은 시도, 그러나 당신은 복잡하고 다루기 어려운 경우 임시 테이블로 하위 쿼리를 처리하기 위해 오라클을 강제 할 수 있습니다. SQL WITH 절은 오라클 9i 릴리스 2 데이터베이스에서 오라클에 의해 도입되었다. SQL WITH 절을 사용하면 하위 쿼리 블록에 기본 SQL 쿼리 내의 여러 위치에서 참조할 수 있는 이름(하위 쿼리 리팩터링이라고도 하는 프로세스)을 지정할 수 있습니다. 이전 예제에서는 쿼리의 본문이 매우 간단하며 복잡성은 WITH 절에 숨김이 있습니다. 데이비드 Njoku는 CACI의 소프트웨어 개발자입니다. 그가 선택한 도구는 오라클 기술이며 오라클 폼, 오라클 애플리케이션 개발 프레임워크 및 오라클 애플리케이션 익스프레스를 사용하여 애플리케이션을 구축한 10년 이상의 경험을 보유하고 있습니다. David는 회계학 학위를 취득했으며 IT에 전향하기 전에 단편 소설 작가이자 잡지 편집자 및 칼럼니스트로 빵을 얻었습니다. 데이비드는 about.me/davidnjoku 연락할 수 있습니다. 파생 된 테이블쿼리 내에서 한 번만 참조할 수 있습니다. CTE는 여러 번 참조할 수 있습니다.

파생된 테이블 결과의 여러 인스턴스를 사용하려면 결과를 여러 번 파생시켜야 합니다. 문서화되지 않은 오라클의 사용에 유의하십시오 WITH 절에 힌트를 구체화합니다. Oracle 구체화 힌트는 Oracle CBO가 WITH 절 내에서 생성된 임시 테이블을 구체화하는 데 사용되며 그 반대는 문서화되지 않은 인라인 힌트입니다. Oracle10g에서는 이 작업을 수행해야 하지 않지만 테이블을 한 번만 만들 수 있습니다. EMP 및 DEPT 테이블만 사용하는 것이 무엇을 의미하는지 설명하기가 어려울 것이므로 대신 몇 개의 더미 테이블을 사용해 보겠습니다. 판매 품목을 나열할 뿐만 아니라 가격, 설명, 수익, 누가 판매했는지 를 나열하는 일종의 판매 보고서를 실행하고 있다고 가정해 보겠습니다. 다음 예제에서는 SQL의 가장 효율적인 사용을 보여 주지 않을 수도 있지만, 각 블록에 대한 요구 사항을 구문 분석하여 명령문 타워를 구축하는 방법에 대한 아이디어를 제공합니다. Oracle12c 이전에는 오라클 트랜잭션이 표준 UNDO 테이블공간 내에서 임시 테이블(WITH 절 구체화, 글로벌 임시 테이블)에 UNDO를 사용했습니다. 이제 UNDO 테이블스페이스 가 아닌 임시 테이블스페이스 내에서 UNDO를 관리하도록 « 세션 집합 temp_undo_enabled=true 변경 »을 지정할 수 있습니다. 이렇게 하면 « 일반 » UNDO의 콘텐츠가 줄어들어 플래시백 작업이 빨라집니다.

Catégories :