Du partitionerar tabellen på den aktiva flaggan, så att aktiva poster finns i en partition och inaktiva poster finns i den andra partitionen. Sedan skapar du en aktiv vy för varje tabell som automatiskt har det aktiva filtret på sig. Databasfrågemotorn begränsar automatiskt frågan till den partition som har de aktiva posterna i sig, vilket är mycket snabbare än att ens använda ett index på den flaggan.
Här är ett exempel på hur man skapar en partitionerad tabell i Oracle. Oracle har inte booleska kolumntyper, så jag har ändrat din tabellstruktur för Oracle-ändamål.
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)
);
Om du ville kan du placera varje partition i olika tabellutrymmen. Du kan också partitionera dina index.
Detta verkar för övrigt vara en upprepning av detta fråga, som nybörjare måste jag fråga, hur är proceduren för att hantera oavsiktliga dubbletter?
Redigera: Som begärts i kommentarerna, gav ett exempel för att skapa en partitionerad tabell i Oracle