Si partiziona la tabella sul flag attivo, in modo che i record attivi si trovino in una partizione e i record inattivi si trovino nell'altra partizione. Quindi crei una vista attiva per ogni tabella che ha automaticamente il filtro attivo su di essa. Il motore di query del database limita automaticamente la query alla partizione che contiene i record attivi, il che è molto più veloce persino dell'utilizzo di un indice su quel flag.
Ecco un esempio di come creare una tabella partizionata in Oracle. Oracle non ha tipi di colonne booleane, quindi ho modificato la struttura della tua tabella per scopi Oracle.
CREATE TABLE people
(
id NUMBER(10),
name VARCHAR2(100),
active NUMBER(1)
)
PARTITION BY LIST(active)
(
PARTITION active_records VALUES (0)
PARTITION inactive_records VALUES (1)
);
Se lo desideri, puoi mettere ogni partizione in tablespace diversi. Puoi anche partizionare i tuoi indici.
Per inciso, questa sembra una ripetizione di questo domanda, come principiante devo chiedere, qual è la procedura per gestire i duplicati non intenzionali?
Modifica: Come richiesto nei commenti, fornito un esempio per la creazione di una tabella partizionata in Oracle