Praca z tabelami tymczasowymi

Optymalizacja wydajności zapytań w PostgreSQL

Amy McCarty

Instructor

Tabele tymczasowe (TEMP)

Co?

  • Krótkotrwała tabela

Dlaczego?

  • Tymczasowe przechowywanie danych
  • Sesja bazy danych
  • Wiele zapytań
  • Dane specyficzne dla użytkownika
  • Wolne tabele

Jak?

  • CREATE TEMP TABLE nazwa AS
Optymalizacja wydajności zapytań w PostgreSQL

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

 

 

 

Święta USA

holiday holiday_type
Epiphany religious
Thanksgiving secular
Optymalizacja wydajności zapytań w PostgreSQL

Wolne, duże tabele

  • Wolna ze względu na dużą liczbę rekordów

 

Statystyki tabeli World Holidays USA Holidays
Typ tabela tabela tymczasowa
Liczba wierszy 591 444 25
Optymalizacja wydajności zapytań w PostgreSQL

Wolne, złożone widoki

  • Wolny ze względu na logikę widoku

Diagram pokazujący, że tabele poszczególnych krajów zasilają widok World Holidays

Statystyki tabeli World Holidays USA Holidays
Typ widok tabela tymczasowa
Liczba wierszy 591 444 25
Źródła 195 1
  • Tabele zawierają dane
  • Widoki zawierają instrukcje dostępu do danych
Optymalizacja wydajności zapytań w PostgreSQL

Łączenie wielu tabel z jedną

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)  )
, ...
Optymalizacja wydajności zapytań w 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

Planista zapytań (kroki wykonania)

Wielu kucharzy przy dużym garnku

  • Statystyki z pg_statistics
  • Szacunki czasu wykonania
Optymalizacja wydajności zapytań w PostgreSQL

Czas na ćwiczenia!

Optymalizacja wydajności zapytań w PostgreSQL

Preparing Video For Download...