Arbeta med temporära tabeller

Förbättra frågeprestanda i PostgreSQL

Amy McCarty

Instructor

Om temp(orära) tabeller

Vad?

  • Kortlivad tabell

Varför?

  • Tillfällig lagring
  • Databassession
  • Flera frågor
  • Användarspecifik
  • Långsamma tabeller

Hur?

  • CREATE TEMP TABLE namn AS
Förbättra frågeprestanda i PostgreSQL

Struktur för TEMP-tabeller

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
Förbättra frågeprestanda i PostgreSQL

Stora, långsamma tabeller

  • Långsam på grund av många rader

 

Tabellinfo World Holidays USA Holidays
Typ tabell temp-tabell
Antal rader 591 444 25
Förbättra frågeprestanda i PostgreSQL

Komplicerade, långsamma vyer

  • Långsam på grund av vylogik

Diagram som visar att enskilda landstabeller matar vyn World Holidays

Tabellinfo World Holidays USA Holidays
Typ vy temp_table
Antal rader 591 444 25
Källor 195 1
  • Tabeller innehåller data
  • Vyer innehåller vägen till data
Förbättra frågeprestanda i PostgreSQL

Koppla många tabeller till en

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)  )
, ...
Förbättra frågeprestanda i 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

Frågeoptimeraren (körningssteg)

Flera kockar runt en stor gryta

  • Statistik från pg_statistics
  • Uppskattad körtid
Förbättra frågeprestanda i PostgreSQL

Nu kör vi en övning!

Förbättra frågeprestanda i PostgreSQL

Preparing Video For Download...