듀얼 테이블(DUAL table)은 모든 오라클 데이터베이스 설치본에 기본으로 존재하는, 한 열로 이루어진 특별한 테이블이다. SYSDATE, USER와 같은 의사컬럼 선택에 사용하는 것이 적절하다. 이 테이블은 'X' 값을 포함하는 DUMMY(더미)라 불리는 하나의 VARCHAR2(1) 열이 있다.

사용 예 편집

오라클의 SQLFROM 절이 필요하지만 일부 쿼리는 테이블 자체를 요구하지 않는다. DUAL이 이러한 경우에 쉽게 쓰일 수 있다.

SELECT 1+1
FROM DUAL;

SELECT 1
FROM DUAL;

SELECT USER
FROM DUAL;

select sysdate
from dual;

역사 편집

듀얼 테이블은 오라클찰스 바이스(Charles Weiss)가 내부 를 조인할 목적으로 테이블을 제공하기 위해 만들었다:

저는 오라클 데이터 사전에 기반이 되는 오브젝트로 듀얼 테이블을 만들었습니다. 그 테이블 자체가 아닌 조회할 것으로 예측되는 뷰 내부에서 사용됩니다. GROUP BY를 사용하여 결과가 되는 조인을 요약함으로써 DATA 익스텐트와 INDEX 익스텐트의 저장 공간의 양을 볼 수 있습니다. 듀얼(DUAL)이라는 이름은 한 곳에서 한 쌍의 열을 만드는 작업이었기에 적절해 보였습니다.[1]


원래의 듀얼 테이블에는 "듀얼"이라는 이름대로 두 개의 열이 있었지만 현재는 하나의 열만이 있다.

최적화 편집

듀얼은 본래 테이블로서, 데이터베이스 엔진은 DUAL을 SELECT FROM할 때 테이블 상의 디스크 입출력을 수행하였다. 이러한 디스크 입출력은 일반적으로 논리적인 입출력으로(물리적인 디스크 접근을 동반하지 않음) 디스크 블록들이 보통 메모리에 이미 캐시되어 있는 상태였다. 이로 말미암아 듀얼 테이블로의 논리적 입출력의 양이 매우 컸다.

10g 릴리즈 1을 기점으로 오라클 데이터베이스는 최적화되어, 데이터베이스는 듀얼 테이블이 실제로 존재하더라도 더 이상 듀얼 테이블에 물리적·논리적 입출력을 수행하지 않는다.[2]

참조 편집

  1. “More About Oracle's History”. 《Oracle Magazine》. January/February 2002. 2004년 12월 5일에 원본 문서에서 보존된 문서. 4 September 2013에 확인함. 
  2. “Oracle Database SQL Language Reference 11g Release 2 (11.2), Selecting from the DUAL Table”. 2013년 12월 28일에 원본 문서에서 보존된 문서. 2013년 12월 28일에 확인함.