SQL 튜닝의 시작 (2013년)
CONNECT BY LEVEL로 데이터 추출하기 0 0 61,243

by 구루비스터디 CONNECT BY LEVEL [2018.07.14]


CONNECT BY LEVEL 로 데이터 추출하기

  • 10G 이전 버전에서는 뷰나 테이블로 10G 이후 버전 DUAL 테이블과 CONNECT BY LEVEL 사용하여 추가적인 I/O 없이 임의 데이터 생성.


임의의 숫자 만들기


1 ~ 10 가지 추출하는 SQL

-- 테스트 시작
SQL> select * from v$version;

BANNER
-------------------------------------------------------------------------

Oracle Database 11g Enterprise Edition Release 11.2.0.1.0 - Production
PL/SQL Release 11.2.0.1.0 - Production
CORE    11.2.0.1.0      Production
TNS for 32-bit Windows: Version 11.2.0.1.0 - Production
NLSRTL Version 11.2.0.1.0 - Production

SQL> SELECT LEVEL AS NUM_ROW
  2   FROM DUAL
  3  CONNECT BY LEVEL < 11;

   NUM_ROW
----------
         1
         2
         3
         4
         5
         6
         7
         8
         9
        10




임의의 날짜 만들기
  • CONNECT BY LEVEL 이 없었다면, 날짜가 저장된 별도의 테이블을 및 딕션어리 뷰 등을 사용하여 조회함
  • 따라서 발생되는 I/O가 발생함
  • 아래와 같은 방법으로 날짜 관련 추출된 SQL 생성시 추가적인I/O는 발생하지않는다.


SQL> SELECT TO_CHAR(TO_DATE('20111201','YYYYMMDD') +LEVEL-1,'YYYYYMMDD') AS "DATE"
  2   FROM DUAL
  3  CONNECT BY LEVEL <= LAST_DAY(TO_DATE('20111201','YYYYMMDD'))
  4                              -TO_DATE('20111201','YYYYMMDD')+1;

DATE
---------
201111201
201111202
201111203
201111204
201111205
201111206
201111207
201111208
201111209
201111210
201111211

DATE
---------
201111212
201111213
201111214
201111215
201111216
201111217
201111218
201111219
201111220
201111221
201111222

DATE
---------
201111223
201111224
201111225
201111226
201111227
201111228
201111229
201111230
201111231


"데이터베이스 스터디모임" 에서 2013년에 "SQL튜닝의시작 " 도서를 스터디하면서 정리한 내용 입니다.

- 강좌 URL : http://www.gurubee.net/lecture/3815

- 구루비 강좌는 개인의 학습용으로만 사용 할 수 있으며, 다른 웹 페이지에 게재할 경우에는 출처를 꼭 밝혀 주시면 고맙겠습니다.~^^

- 구루비 강좌는 서비스 제공을 위한 목적이나, 학원 홍보, 수익을 얻기 위한 용도로 사용 할 수 없습니다.

댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입