Trabalhando com tabelas temporárias

Melhorando o Desempenho de Consultas no PostgreSQL

Amy McCarty

Instructor

Sobre tabelas temporárias

O quê?

  • Tabela de curta duração

Por quê?

  • Armazenamento transitório
  • Sessão do banco
  • Várias consultas
  • Específica do usuário
  • Tabelas lentas

Como?

  • CREATE TEMP TABLE name AS
Melhorando o Desempenho de Consultas no PostgreSQL

Estrutura de tabela 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';

 

 

 

Feriados dos EUA

holiday holiday_type
Epiphany religious
Thanksgiving secular
Melhorando o Desempenho de Consultas no PostgreSQL

Tabelas grandes e lentas

  • Lenta por ter muitos registros

 

Estatísticas World Holidays USA Holidays
Tipo table temp table
Nº de linhas 591.444 25
Melhorando o Desempenho de Consultas no PostgreSQL

Views lentas e complexas

  • Lenta por causa da lógica da view

Diagrama mostrando que tabelas de países individuais alimentam a view World Holidays

Estatísticas World Holidays USA Holidays
Tipo view temp_table
Nº de linhas 591.444 25
Fontes 195 1
  • Tabelas contêm dados
  • Views contêm instruções para os dados
Melhorando o Desempenho de Consultas no PostgreSQL

Juntando muitas tabelas a uma

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)  )
, ...
Melhorando o Desempenho de Consultas no 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

Planejador de consultas (etapas de execução)

Vários chefs em volta de uma grande panela

  • Estatísticas de pg_statistics
  • Estimativas de tempo de execução
Melhorando o Desempenho de Consultas no PostgreSQL

Vamos praticar!

Melhorando o Desempenho de Consultas no PostgreSQL

Preparing Video For Download...