Teradata - Estatísticas

O otimizador Teradata apresenta uma estratégia de execução para cada consulta SQL. Essa estratégia de execução é baseada nas estatísticas coletadas nas tabelas usadas na consulta SQL. As estatísticas na tabela são coletadas usando o comando COLLECT STATISTICS. O Optimizer requer informações do ambiente e dados demográficos para chegar a uma estratégia de execução ideal.

Informação Ambiental

  • Número de nós, AMPs e CPUs
  • Quantidade de memória

Dados Demográficos

  • Numero de linhas
  • Tamanho da linha
  • Faixa de valores na tabela
  • Número de linhas por valor
  • Número de nulos

Existem três abordagens para coletar estatísticas sobre a mesa.

  • Amostragem aleatória de AMP
  • Coleta de estatísticas completa
  • Usando a opção SAMPLE

Coletando Estatísticas

O comando COLLECT STATISTICS é usado para coletar estatísticas em uma tabela.

Sintaxe

A seguir está a sintaxe básica para coletar estatísticas em uma tabela.

COLLECT [SUMMARY] STATISTICS   
INDEX (indexname) COLUMN (columnname) 
ON <tablename>;

Exemplo

O exemplo a seguir coleta estatísticas na coluna EmployeeNo da tabela Employee.

COLLECT STATISTICS COLUMN(EmployeeNo) ON Employee;

Quando a consulta acima é executada, ela produz a seguinte saída.

*** Update completed. 2 rows changed. 
*** Total elapsed time was 1 second.

Exibindo estatísticas

Você pode visualizar as estatísticas coletadas usando o comando HELP STATISTICS.

Sintaxe

A seguir está a sintaxe para visualizar as estatísticas coletadas.

HELP STATISTICS <tablename>;

Exemplo

A seguir está um exemplo para visualizar as estatísticas coletadas na tabela Employee.

HELP STATISTICS employee;

Quando a consulta acima é executada, ela produz o seguinte resultado.

Date       Time      Unique Values           Column Names 
--------   -------- -------------------- ----------------------- 
16/01/01   08:07:04         5                       * 
16/01/01   07:24:16         3                   DepartmentNo 
16/01/01   08:07:04         5                   EmployeeNo