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
운영게시판
최근게시물
PostgreSQL Q&A 9982 게시물 읽기
No. 9982
partition by range (timestamp)로 파티션 후
작성자
test
작성일
2018-05-25 10:54
조회수
6,287

partition by range(timestamp)로 년월단위 파티션 후

select * from table where time_stamp = '날짜' 로하면 파티션 테이블로 검색되는데

select * from table where time_stamp = to_timestamp('날짜','YYYY,,,,') 이렇게 하면 전체 테이블을 검색하네요.

 

제가 파티션을 잘못생성한건지.. 버그인건지.. to_timestamp 사용시 뭐가 다른건지.. 궁금합니다.

 

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

 to_timestamp 결과가 뭔지 알기 전에, 하위 테이블 선택이 먼저 결정되기 때문입니다. 

PostgreSQL 파티션 가지치기(partition pruning)의 한계입니다. 

자세한 이야기는  http://postgresql.kr/blog/postgresql_partition_table.html

페이지에서 설명하고 있습니다.

 

김상기(ioseph)님이 2018-05-25 11:38에 작성한 댓글입니다.

 링크의 예제랑 좀 다른거같아요.

 

제 쿼리는 where 절에 time_stamp = '텍스트 날짜값'  

 

으로 썻느냐

 

time_stamp = to_timestamp('') 를 썼느냐의 차이밖에 없거든요

 

지금 계속보는데 time_stamp > current_timestamp도 구분을 못하네요.

 

pruning error같은데 같은 이유는 아니거같다는 생각입니다..

 

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

정정함당..

to_timestamp함수에 답이 오기전에 계획을 맞히면서 pruning error가 나는걸수도 있겠군요

ㅠㅠ

 

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

생각해보니 ㅡㅡ

where 절에 date_part 로 월단위로 구분할때는 제대로 찾아가더니,

to_timestamp는 못찾는게 이상하네요.

test님이 2018-05-25 12:02에 작성한 댓글입니다.
이 댓글은 2018-05-25 12:24에 마지막으로 수정되었습니다. Edit

 data_part 는 immutable 함수고, to_timestamp 함수는 stable 함수라서 그래요.

테이블 가지치기가 제대로 되려면, 해당 하위 테이블에 정의한 그 range 값이 상수로 와야합니다.

김상기(ioseph)님이 2018-05-25 13:30에 작성한 댓글입니다.
이 댓글은 2018-05-25 13:32에 마지막으로 수정되었습니다.

@ 김상기

또하나 배워갑니다... 쿼리를 많이 바꿔야겠네요..

test님이 2018-05-25 13:47에 작성한 댓글입니다. Edit

 위 문제 해결했습니다.

 

immutable 함수를 만들어서 return 에 current_timestamp 하고

where 에 immutable_함수() -interval  로 하니까 partition pruning되네요.

좋은힌트 감사합니다.

test님이 2018-05-30 11:55에 작성한 댓글입니다. Edit

 partition table 생성시 check절을 timestamp 기준으로 생성해보세요

김용규(bacoo)님이 2018-05-30 15:46에 작성한 댓글입니다.
[Top]
No.
제목
작성자
작성일
조회
9986PSQL // invalid byte sequence for encoding "UTF8":... [1]
김유중
2018-07-02
4857
9984pgadmin III 에서 데이터를 받을 때 컬럼명을 표시하는방법 문의 [1]
초보
2018-06-11
5079
9983postgresql version upgrade 9.3 -> 10.3 [2]
박성배
2018-05-28
5354
9982partition by range (timestamp)로 파티션 후 [6]
test
2018-05-25
6287
9981[질문]Oracle프로그램 200개 를 PostgreSQL 로 바꿀려면.... [3]
이용재
2018-05-21
5335
9980윈도우즈에서 pg_upgrade 에러... [3]
박병호
2018-05-19
6623
9979postgresql 설치하고난뒤부터 오류로 고생중인 신입입니다. ㅠㅠ [1]
위가람
2018-05-16
6208
Valid XHTML 1.0!
All about the DATABASE... Copyleft 1999-2023 DSN, All rights reserved.
작업시간: 0.053초, 이곳 서비스는
	PostgreSQL v16.1로 자료를 관리합니다