การทำงานกับตารางชั่วคราว

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

Amy McCarty

Instructor

เกี่ยวกับตารางชั่วคราว (temp table)

คืออะไร?

  • ตารางที่มีอายุการใช้งานสั้น

ทำไมต้องใช้?

  • จัดเก็บข้อมูลชั่วคราว
  • เชื่อมโยงกับ database session
  • รองรับหลายคิวรี
  • ใช้เฉพาะผู้ใช้คนนั้น
  • แทนที่ตารางที่ช้า

สร้างอย่างไร?

  • CREATE TEMP TABLE name AS
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

โครงสร้างของ TEMP table

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

 

 

 

USA Holidays

holiday holiday_type
Epiphany religious
Thanksgiving secular
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

ตารางขนาดใหญ่ที่ช้า

  • ช้าเพราะมีข้อมูลจำนวนมาก

 

Table Stats World Holidays USA Holidays
Type table temp table
# Rows 591,444 25
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

View ที่ซับซ้อนและช้า

  • ช้าเพราะ logic ของ view ซับซ้อน

แผนภาพแสดงตารางของแต่ละประเทศที่ป้อนข้อมูลเข้า World Holidays view

Table Stats World Holidays USA Holidays
Type view temp_table
# Rows 591,444 25
Sources 195 1
  • ตารางเก็บข้อมูลโดยตรง
  • View เก็บเฉพาะคำสั่งในการดึงข้อมูล
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

การ JOIN หลายตารางกับตารางเดียว

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

Query planner (ขั้นตอนการประมวลผล)

เชฟหลายคนรอบหม้อใบใหญ่

  • สถิติจาก pg_statistics
  • การประมาณเวลาทำงาน
การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

มาฝึกกันเถอะ!

การเพิ่มประสิทธิภาพคิวรีใน PostgreSQL

Preparing Video For Download...