APPROX_COUNT |
Compteur d'approximation |
| Oracle Database SQL |
Oracle 12c Release 2 (12.2) ou supérieure |
Syntaxe
|
APPROX_COUNT ( ( * | expr ) [ , 'MAX_ERROR' ] )
|
Paramètres
| Nom |
Description |
| * ou expr |
Ce paramètre permet d'indiquer si l'on souhaite compter toutes les lignes (*) ou uniquement celles correspondant à une expression (par exemple, une colonne non nulle). |
| 'MAX_ERROR' |
Ce paramètre permet de spécifier en option une tolérance maximale d'erreur relative dans l'estimation du comptage. Il s'agit d'une chaîne littérale (exemple '0.05' pour 5 %). |
Description
Cette fonction permet d'estimer rapidement le nombre total de lignes dans une requête, en utilisant des algorithmes d'approximation pour améliorer les performances sur de grands ensembles de données.
Remarques
- Estimation rapide du volume de données : Cette fonction permet de comptabiliser un grand volume de lignes avec une rapidité bien supérieure à COUNT(). Elle
utilise des algorithmes probabilistes pour éviter de scanner toutes les données, ce qui est idéal pour les requêtes sur des tables massives ou dans les environnements
Big Data.
- Alternative performante à COUNT() : APPROX_COUNT() offre une alternative à COUNT(*) lorsqu'une précision absolue n'est pas nécessaire. Elle est
particulièrement utile dans les tableaux de bord analytiques ou les agrégations où un petit écart est tolérable.
- Prise en charge du paramètre 'MAX_ERROR' : Le second paramètre optionnel 'MAX_ERROR' permet de définir la marge d'erreur acceptable. Cela permet à
l'utilisateur de contrôler l'équilibre entre performance et précision, ce qui est impossible avec la fonction COUNT() classique.
- Utilisation flexible avec * ou une expression : Cette fonction peut être utilisée avec * pour compter toutes les lignes, ou avec une expression pour
ne compter que certaines conditions (comme une colonne non nulle), ce qui augmente sa souplesse.
- Optimisation pour les entrepôts de données : APPROX_COUNT() est conçue pour les environnements avec de très larges volumes, tels que les data warehouses.
Elle permet de réduire considérablement la charge serveur lors de requêtes répétées ou planifiées.
- Ne garantit pas une précision exacte : Contrairement à COUNT(), cette fonction ne garantit pas une valeur exacte. Elle fournit une estimation dans les
limites de l'erreur spécifiée, ce qui peut être un inconvénient dans les contextes où la précision est critique (comme la facturation).
- Compatible avec des clauses analytiques : Bien qu'optimisée pour les calculs globaux, APPROX_COUNT() peut aussi être utilisée avec des clauses GROUP BY,
PARTITION BY, ou ORDER BY, ce qui la rend adaptée aux analyses segmentées et statistiques.
- Non recommandée pour les petits ensembles : Sur des ensembles de données de taille réduite, la fonction n'apporte aucun avantage significatif par rapport
à COUNT() et peut même introduire une incertitude inutile. Elle est surtout utile dès lors que les volumes dépassent plusieurs millions de lignes.
Dernière mise à jour : Dimanche, le 29 Juin 2025