Ho una tabella con voci attive non attive, attivo = 1 per attivo e attivo = 0 per inattivo.Oracle: indicizzazione di un sottoinsieme di righe di una tabella
Ho una varietà di indici su questa tabella, ma ho bisogno solo degli indici mantenuti per le voci attive, poiché l'applicazione esegue solo query sui dati attivi. I dati inattivi devono essere conservati perché possono essere nuovamente attivi, ma in genere ciò avviene solo con aggiornamenti di massa, che comunque non utilizzano un indice.
Sto notando l'indicizzazione delle voci inattive (di cui ci sono sempre più di voci attive) richiede un po 'di spazio.
C'è un modo in Oracle (10g) per fare qualcosa di simile:
create index an_idx on tab (active, col1, col2, ... , coln) where active = 1
?
tentativo precedente:
ho provato usando una funzione indice basato per impostare la prima colonna per nulla quando active = 0
modo:
create index an_idx on tab (decode(active, 1, 1, null), col1, col2, ... , coln)
Ma Oracle sembra ancora indicizzare le colonne inattive in questo caso.
Se il risparmio di spazio è il vostro obiettivo, l'opzione 2 avrebbe senso IMO. –