Lucrul cu tabele temporare

Îmbunătățirea performanței interogărilor în PostgreSQL

Amy McCarty

Instructor

Despre tabelele temporare

Ce?

  • Tabel cu durată scurtă de viață

De ce?

  • Stocare tranzitorie
  • Sesiune de bază de date
  • Interogări multiple
  • Specific utilizatorului
  • Tabele lente

Cum?

  • CREATE TEMP TABLE nume AS
Îmbunătățirea performanței interogărilor în PostgreSQL

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

 

 

 

Sărbători SUA

holiday holiday_type
Epiphany religious
Thanksgiving secular
Îmbunătățirea performanței interogărilor în PostgreSQL

Tabele mari și lente

  • Lent din cauza numărului mare de înregistrări

 

Statistici tabel World Holidays USA Holidays
Tip table temp table
# Rânduri 591.444 25
Îmbunătățirea performanței interogărilor în PostgreSQL

View-uri complexe și lente

  • Lent din cauza logicii view-ului

Diagramă care arată că tabelele individuale de țări alimentează view-ul World Holidays

Statistici tabel World Holidays USA Holidays
Tip view temp_table
# Rânduri 591.444 25
Surse 195 1
  • Tabelele conțin date
  • View-urile conțin instrucțiunile pentru date
Îmbunătățirea performanței interogărilor în PostgreSQL

Unirea mai multor tabele cu una

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)  )
, ...
Îmbunătățirea performanței interogărilor în 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

Planificatorul de interogări (pași de execuție)

Mai mulți bucătari în jurul unui vas mare de gătit

  • Statistici din pg_statistics
  • Estimări de timp de execuție
Îmbunătățirea performanței interogărilor în PostgreSQL

Să exersăm!

Îmbunătățirea performanței interogărilor în PostgreSQL

Preparing Video For Download...