database.sarang.net
UserID
Passwd
Database
DBMS
MySQL
PostgreSQL
Firebird
ㆍOracle
Informix
Sybase
MS-SQL
DB2
Cache
CUBRID
LDAP
ALTIBASE
Tibero
DB 문서들
스터디
Community
공지사항
자유게시판
구인|구직
DSN 갤러리
도움주신분들
Admin
운영게시판
최근게시물
Oracle Q&A 40975 게시물 읽기
No. 40975
파티션을 힌트로 사용하려는데....
작성자
임금펭귄
작성일
2015-10-20 10:38
조회수
8,792

 

파티션 힌트에 대해 구글링 했는데 아무리봐도 모르겠어서 질문 드립니다. ㅠㅠ

 

아래와 같이 파티션이 있는 테이블을 생성하였습니다.

1. where조건에 collect_time값을 정해주면

알아서 파티션을 찾아 select 가 되는건가요??

 

2. 그렇지 않을 경우 트를 써야한다면 파티션 힌트는 어떻게 줘야 하나요??

아래 쿼리가 맞는 쿼리인가요??

힌트가 제대로 적용 됐다면 10월 9일데이터만 select 되어야하는게 맞는거 같은데 전체 데이터를 select 하더라구요..

무엇이 잘못됐는지 알려주시면 감사하겠습니다.

 

SELECT /*+ INDEX (A TB_TEST_PARTITION_151009*/  *

 

FROM TB_TEST_PARTITION A

 

 

-----------------------------------------------------------------------------

 

CREATE TABLE TB_TEST_PARTITION

 

(

  TEST_VALUE    VARCHAR2(14 BYTE),

  COLLECT_TIME  VARCHAR2(14 BYTE)

)

 

PARTITION BY RANGE (COLLECT_TIME)

(  

  PARTITION TB_TEST_PARTITION_151008 VALUES LESS THAN ('20151009000000')

    LOGGING

    NOCOMPRESS 

    TABLESPACE USERS

    PCTFREE    10

    INITRANS   1

    MAXTRANS   255

    STORAGE    (

                INITIAL          64K

                NEXT             1M

                MINEXTENTS       1

                MAXEXTENTS       UNLIMITED

                BUFFER_POOL      DEFAULT

                FLASH_CACHE      DEFAULT

                CELL_FLASH_CACHE DEFAULT

               ),  

  PARTITION TB_TEST_PARTITION_151009 VALUES LESS THAN ('20151010000000')

    LOGGING

    NOCOMPRESS 

    TABLESPACE USERS

    PCTFREE    10

    INITRANS   1

    MAXTRANS   255

    STORAGE    (

                INITIAL          64K

                NEXT             1M

                MINEXTENTS       1

                MAXEXTENTS       UNLIMITED

                BUFFER_POOL      DEFAULT

                FLASH_CACHE      DEFAULT

                CELL_FLASH_CACHE DEFAULT

               )

)

NOCACHE

NOPARALLEL

MONITORING;

 

 

이 글에 대한 댓글이 총 2건 있습니다.

Where 절 collect_time 조건에 따라 오라클이 알아서 필요한 파티션만 읽습니다.

그리고 파티션 pruning을 지원하는 hint는 없는걸로 알고 있습니다. hint라는 것이 optimizer한테 정보를 주는 것이라, 결과값에 영향을 주는 명령은 hint가 될수 없습니다. 하지만 다음과 같은 하나의 파티션만 읽게하는 문법이 따로 있긴합니다.

select * from tb_test_partition partition ( tb_test_partition_151009 ) a;

 

 

고서진(longflat)님이 2015-10-20 19:03에 작성한 댓글입니다.

 아 좋은정보 정말 감사합니다.!!

 

임금펭귄님이 2015-10-21 15:41에 작성한 댓글입니다. Edit
[Top]
No.
제목
작성자
작성일
조회
40978카운트 함수 여러개 사용 어떻게 하나요(서브쿼리없이) [1]
어려워
2015-10-20
8868
40977쿼리 좀 부탁합니다. [1]
땡구리
2015-10-20
9001
40976구오라클에서 신오라클로 마이그레이션시 userid를 변경하는데 속도 질문입니다 [1]
허윤정
2015-10-20
8795
40975파티션을 힌트로 사용하려는데.... [2]
임금펭귄
2015-10-20
8792
40973[쿼리]연속된 숫자 쿼리하는 방법은? [1]
최병련
2015-10-16
9057
40972테이블 두개 사용해서, 중복라인 생성할수 있는 방법이 있을까요? [1]
고래밥
2015-10-16
8862
40971Shell 질문 드립니다.
검콤이
2015-10-16
8495
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2024 DSN, All rights reserved.
작업시간: 0.018초, 이곳 서비스는
	PostgreSQL v16.4로 자료를 관리합니다