sql >> Database teknologi >  >> RDS >> Mysql

"aktivt" flag eller ej?

Du partitionerer tabellen på det aktive flag, så aktive poster er i den ene partition, og inaktive poster er i den anden partition. Derefter opretter du en aktiv visning for hver tabel, som automatisk har det aktive filter på sig. Databaseforespørgselsmotoren begrænser automatisk forespørgslen til den partition, der har de aktive poster i sig, hvilket er meget hurtigere end selv at bruge et indeks på det flag.

Her er et eksempel på, hvordan man opretter en partitioneret tabel i Oracle. Oracle har ikke booleske kolonnetyper, så jeg har ændret din tabelstruktur til Oracle-formå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)
);

Hvis du ville, kunne du placere hver partition i forskellige tablespaces. Du kan også partitionere dine indekser.

Dette ser i øvrigt ud til at være en gentagelse af dette spørgsmål, som nybegynder er jeg nødt til at spørge, hvad er proceduren for at håndtere utilsigtede dubletter?

Rediger: Som anmodet i kommentarerne, givet et eksempel på oprettelse af en partitioneret tabel i Oracle



  1. Få envelope, dvs. overlappende tidsrum

  2. Oprettelse af en bruger på MySQL

  3. Hvordan tilføjer jeg identitetsegenskaben til en eksisterende kolonne i SQL Server

  4. Mysql-lagringsmotor til logtabel