Partycjonujesz tabelę z flagą active, tak aby aktywne rekordy znajdowały się w jednej partycji, a nieaktywne w drugiej. Następnie tworzysz aktywny widok dla każdej tabeli, która automatycznie ma na sobie aktywny filtr. Silnik zapytań bazy danych automatycznie ogranicza zapytanie do partycji zawierającej aktywne rekordy, co jest znacznie szybsze niż użycie indeksu z tą flagą.
Oto przykład tworzenia tabeli partycjonowanej w Oracle. Oracle nie ma typów kolumn logicznych, więc zmodyfikowałem strukturę tabeli na potrzeby 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)
);
Jeśli chcesz, możesz umieścić każdą partycję w różnych przestrzeniach tabel. Możesz także podzielić swoje indeksy na partycje.
Nawiasem mówiąc, wydaje się, że jest to powtórka to pytanie, jako nowicjusz muszę zapytać, jaka jest procedura postępowania z niezamierzonymi duplikatami?
Edytuj: Zgodnie z prośbą w komentarzach podano przykład tworzenia tabeli partycjonowanej w Oracle