임시 테이블 다루기

PostgreSQL에서 쿼리 성능 개선하기

Amy McCarty

Instructor

임시 테이블 소개

무엇?

  • 수명이 짧은 테이블

왜?

  • 임시 저장소
  • 데이터베이스 세션
  • 여러 쿼리
  • 사용자별
  • 느린 테이블

방법

  • CREATE TEMP TABLE name AS
PostgreSQL에서 쿼리 성능 개선하기

임시 테이블 구조

holiday holiday_type country_code
Epiphany religious CZE
Epiphany religious FRA
Epiphany religious USA
Thanksgiving secular USA
CREATE TEMP TABLE usa_holidays AS
  SELECT holiday, holiday_type
  FROM world_holidays
  WHERE country_code = 'USA';

 

 

 

미국 공휴일

holiday holiday_type
Epiphany religious
Thanksgiving secular
PostgreSQL에서 쿼리 성능 개선하기

느리고 큰 테이블

  • 레코드가 많아 느림

 

테이블 통계 World Holidays USA Holidays
유형 table temp table
행 수 591,444 25
PostgreSQL에서 쿼리 성능 개선하기

느리고 복잡한 뷰

  • 뷰 로직 때문에 느림

각 국가 테이블이 World Holidays 뷰로 집계되는 다이어그램

테이블 통계 World Holidays USA Holidays
유형 view temp_table
행 수 591,444 25
소스 195 1
  • 테이블은 데이터를 담음
  • 뷰는 데이터 경로를 정의함
PostgreSQL에서 쿼리 성능 개선하기

여러 테이블을 하나에 조인하기

CREATE TEMP TABLE usa_holidays AS
  SELECT holiday, holiday_type
  FROM world_holidays
  WHERE country_code = 'USA';
WITH religious AS 
(   SELECT usa.holiday, r.initial_yr
     , r.celebration_dt
    FROM religious r
    INNER JOIN usa_holidays usa 
      USING (holiday)  )
, secular AS 
(   SELECT usa.holiday, s.initial_yr
     , s.celebration_dt
    FROM secular s
    INNER JOIN usa_holidays usa
      USING (holiday)  )
, ...
PostgreSQL에서 쿼리 성능 개선하기

ANALYZE

 

1 CREATE TEMP TABLE usa_holidays AS
2 SELECT holiday, holiday_type
3 FROM world_holidays
4 WHERE country_code = 'USA';
5 
6 ANALYZE usa_holidays;
7 
8 SELECT * FROM usa_holidays

쿼리 플래너(실행 단계)

큰 냄비 주위에 여러 요리사

  • pg_statistics의 통계
  • 실행 시간 추정치
PostgreSQL에서 쿼리 성능 개선하기

연습해 봅시다!

PostgreSQL에서 쿼리 성능 개선하기

Preparing Video For Download...