Робота з тимчасовими таблицями

Покращення продуктивності запитів у PostgreSQL

Amy McCarty

Instructor

Про тимчасові (temp) таблиці

Що?

  • Короткоживуча таблиця

Навіщо?

  • Тимчасове зберігання
  • Сеанс бази даних
  • Кілька запитів
  • Для конкретного користувача
  • Повільні таблиці

Як?

  • CREATE TEMP TABLE name AS
Покращення продуктивності запитів у PostgreSQL

Структура 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';

 

 

 

Свята США

holiday holiday_type
Epiphany religious
Thanksgiving secular
Покращення продуктивності запитів у PostgreSQL

Повільні, великі таблиці

  • Повільні через велику кількість записів

 

Статистика таблиці World Holidays USA Holidays
Тип table temp table
№ рядків 591,444 25
Покращення продуктивності запитів у PostgreSQL

Повільні, складні подання

  • Повільні через логіку подання (view)

Схема: окремі таблиці країн формують подання World Holidays

Статистика таблиці World Holidays USA Holidays
Тип view temp_table
№ рядків 591,444 25
Джерела 195 1
  • Таблиці містять дані
  • Подання містять «рецепт» доступу до даних
Покращення продуктивності запитів у PostgreSQL

Об'єднання багатьох таблиць в одну

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

Планувальник запитів (кроки виконання)

Кілька кухарів навколо великого казана

  • Статистика з pg_statistics
  • Оцінки часу виконання
Покращення продуктивності запитів у PostgreSQL

Давайте потренуємось!

Покращення продуктивності запитів у PostgreSQL

Preparing Video For Download...