Teradata - Statistiques

L'optimiseur Teradata propose une stratégie d'exécution pour chaque requête SQL. Cette stratégie d'exécution est basée sur les statistiques collectées sur les tables utilisées dans la requête SQL. Les statistiques sur la table sont collectées à l'aide de la commande COLLECT STATISTICS. L'optimiseur nécessite des informations sur l'environnement et des données démographiques pour proposer une stratégie d'exécution optimale.

Informations sur l'environnement

  • Nombre de nœuds, d'AMP et de processeurs
  • Quantité de mémoire

Données démographiques

  • Nombre de rangées
  • Taille de ligne
  • Plage de valeurs dans le tableau
  • Nombre de lignes par valeur
  • Nombre de valeurs nulles

Il existe trois approches pour recueillir des statistiques sur la table.

  • Échantillonnage AMP aléatoire
  • Collection complète de statistiques
  • Utilisation de l'option SAMPLE

Collecte de statistiques

La commande COLLECT STATISTICS est utilisée pour collecter des statistiques sur une table.

Syntaxe

Voici la syntaxe de base pour collecter des statistiques sur une table.

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

Exemple

L'exemple suivant collecte des statistiques sur la colonne EmployeeNo de la table Employee.

COLLECT STATISTICS COLUMN(EmployeeNo) ON Employee;

Lorsque la requête ci-dessus est exécutée, elle produit la sortie suivante.

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

Affichage des statistiques

Vous pouvez afficher les statistiques collectées à l'aide de la commande HELP STATISTICS.

Syntaxe

Voici la syntaxe pour afficher les statistiques collectées.

HELP STATISTICS <tablename>;

Exemple

Voici un exemple pour afficher les statistiques collectées sur la table Employee.

HELP STATISTICS employee;

Lorsque la requête ci-dessus est exécutée, elle produit le résultat suivant.

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