미리 뷰를 선언해 둠으로써 추후에 계속 재사용할 수 있도록 하는 것. With절을 한 번만 참조 시 Inline으로 수행되지만 materialize 힌트를 사용해 Material 방식으로 사용할 수도 있다.
with temp as (
select /*+ materialize */
...
)
내부적으로 임시 테이블을 생성함으로써 반복 재사용하는 것.
Material 방식으로 선언된 임시 데이터는 영구적인 오브젝트가 아니며, With 절을 선언한 SQL문이 수행되는 동안 만 유지된다.
배치 프로그램에서 특정 데이터 집합을 반복적으로 사용하거나, 전체 처리 흐름을 단순화시킬 목적으로 임시 테이블을 활용하는 경우가 있는데, 이 방식을 사용하면 새로운 임시 테이블을 생성하지 않고도 같은 처리를 할 수 있다.
Material 방식은 내부적으로 Global temporary 테이블을 생성해서 temp 테이블 스페이스에 데이터를 기록한다. 오라클은 Global temporary 데이터를 읽을 때 버퍼 캐시를 경우하는데 때문에 원본 데이터 집합을 가공하지 않고 그대로 저장했다가 읽는 경우, Materialize 방식은 성능 개선에 전혀 도움되지 않는다.
물리적으로 임시 테이블을 생성하지 않고 참조된 횟수 만큼 런타임 시 반복 수행하는 것.
SQL문에서 반복적으로 참조되는 집합을 미리 선언함으로써 코딩을 단순화하는 용도이다. SQL Server의 경우, Inline 방식만 지원한다.
오라클에서 이 방식을 명시적으로 사용하기 위해선 inline 힌트를 추가하면 된다.