ORACLE 12C: approx_count_distinct parameter

ORACLE 12C: approx_count_distinct parameter
  • 2
    Mar

ORACLE 12C: approx_count_distinct parameter

twittergoogle_pluslinkedin

La funzione APPROX_COUNT_DISTINCT è stato aggiunta, ma non documentata in Oracle 11g per migliorare la velocità di calcolo del numero di valori distinti quando la raccolta di statistiche utilizza il pacchetto DBMS_STATS.
Database Oracle 12c (12.1.0.2) include ora la funzione nella documentazione, quindi siamo liberi
usarlo nelle nostre applicazioni come funzione SQL supportato.
Restituisce il numero approssimativo di righe che contengono valori distinti di
espressione.
È alternativa alla funzione COUNT (espressione DISTINCT), che restituisce il
esatto numero di righe che contengono valori distinti di espr.
Per l’elaborazione di grandi quantità di dati che è significativamente più veloce di COUNT,
con deviazione trascurabile valori dal risultato esatto.
La funzione APPROX_COUNT_DISTINCT () ignora i record che contengono un valore NULL il valore per l’espressione. Inoltre si svolge meno lavoro sulla selezione e aggregazioni.
Basta eseguire e spiegare piano e si possono vedere le differenze.
In una parte del materiale da Oracle la APPROX_COUNT_DISTINCT funzione ()può essere più di 5x volte più veloce.
Ma dipende dal numero di distinti i valori e la complessità della query SQL.
Esempio:
Supponiamo di avere un tavolo carico di 30 milioni di righe.
Ora semplice test delle prestazioni:
set di temporizzazione su
SELEZIONARE
COUNT (CP1 distinti),
COUNT (CP2 distinti),
COUNT (CP3 distinti)
DA TEST_TABLE;
CP1 CP2 CP3
———- ———- ———-
3000 1000 100
Trascorso: 00: 00: 32,125
SELEZIONARE
APPROX_COUNT_DISTINCT (CP1),
APPROX_COUNT_DISTINCT (CP2),
APPROX_COUNT_DISTINCT (CP3)
DA TEST_TABLE;
CP1 CP2 CP3
———- ———- ———-
2962 990 100
Trascorso: 00: 00: 04,368