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