Làm việc với bảng tạm

Cải thiện hiệu năng truy vấn trong PostgreSQL

Amy McCarty

Instructor

Về bảng tạm (temporary)

Là gì?

  • Bảng sống ngắn

Vì sao?

  • Lưu trữ tạm thời
  • Phiên làm việc cơ sở dữ liệu
  • Nhiều truy vấn
  • Theo người dùng
  • Bảng chậm

Cách làm?

  • CREATE TEMP TABLE name AS
Cải thiện hiệu năng truy vấn trong PostgreSQL

Cấu trúc bảng TEMP

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';

 

 

 

Ngày lễ Hoa Kỳ

holiday holiday_type
Epiphany religious
Thanksgiving secular
Cải thiện hiệu năng truy vấn trong PostgreSQL

Bảng lớn, chậm

  • Chậm do nhiều bản ghi

 

Thống kê bảng World Holidays USA Holidays
Loại table temp table
# Hàng 591.444 25
Cải thiện hiệu năng truy vấn trong PostgreSQL

View phức tạp, chậm

  • Chậm do logic view

Sơ đồ cho thấy các bảng theo quốc gia cấp dữ liệu cho view World Holidays

Thống kê bảng World Holidays USA Holidays
Loại view temp_table
# Hàng 591.444 25
Nguồn 195 1
  • Bảng chứa dữ liệu
  • View chứa hướng dẫn tới dữ liệu
Cải thiện hiệu năng truy vấn trong PostgreSQL

Join nhiều bảng vào một bảng

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)  )
, ...
Cải thiện hiệu năng truy vấn trong 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

Bộ lập kế hoạch truy vấn (các bước thực thi)

Nhiều đầu bếp quanh một nồi lớn

  • Thống kê từ pg_statistics
  • Ước tính thời gian chạy
Cải thiện hiệu năng truy vấn trong PostgreSQL

Ayo berlatih!

Cải thiện hiệu năng truy vấn trong PostgreSQL

Preparing Video For Download...