Você particiona a tabela no sinalizador ativo, para que os registros ativos fiquem em uma partição e os registros inativos na outra partição. Em seguida, você cria uma exibição ativa para cada tabela que possui automaticamente o filtro ativo. O mecanismo de consulta do banco de dados restringe automaticamente a consulta à partição que contém os registros ativos, o que é muito mais rápido do que usar um índice nesse sinalizador.
Aqui está um exemplo de como criar uma tabela particionada no Oracle. O Oracle não tem tipos de colunas booleanas, então modifiquei sua estrutura de tabela para fins do 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 você quisesse, poderia colocar cada partição em diferentes tablespaces. Você também pode particionar seus índices.
Aliás, isso parece uma repetição de isso pergunta, como um novato eu preciso perguntar, qual é o procedimento para lidar com duplicatas não intencionais?
Editar: Conforme solicitado nos comentários, forneceu um exemplo para criar uma tabela particionada no Oracle