postgres에서 generate_series에 대해 질문 드립니다. 0 2 2,901

by 윤 posgres sql query generate_series 성능 [2022.12.19 11:08:06]


select generate_series('2020-01-01'::date, '2020-12-31'::date, '1 days') days;

generate_series를 통해서 특정 날짜 범위를 1일씩 증가시켜서 날짜를 얻을 수 있다고 알고 있습니다.

generate_series를 사용했을 때 성능 측면에서 괜찮은지 궁금합니다.

그리고 generate_series를 대체할 수 있는 다른 것이 있는지도 궁금합니다.

by 마농 [2022.12.19 13:43:59]

1. 성능이 괜찮은지는 비교 대상이 있어야 판단할 수 있는데요.
 - 예를 들면 달력테이블을 미리 만들어 두고 사용하는 방식과 비교한다면
 - 테이블을 읽는 I/O 가 발생되지 않는 generate_series 가 더 좋지 않을까? 생각되네요.
2. 대체할 수 있는 방법을 생각나는 대로 적어보면.
 - 달력테이블
 - Recursive 쿼리
 - 내가 모르는 또 다른 방법이 있을지도?
 

WITH RECURSIVE t AS
(
SELECT '2020-01-01'::DATE dt
 UNION ALL
SELECT (dt + INTERVAL '1 DAY')::DATE
  FROM t
 WHERE dt < '2020-12-31'::DATE
)
SELECT *
  FROM t
;

 


by 윤 [2022.12.19 16:29:23]

오~ 답변 감사합니다!!

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