sql >> Database >  >> RDS >> Mysql

`actieve' vlag of niet?

U partitioneert de tabel op de actieve vlag, zodat actieve records zich in de ene partitie bevinden en inactieve records in de andere partitie. Vervolgens maakt u voor elke tabel een actieve weergave waarop automatisch het actieve filter staat. De databasequery-engine beperkt de query automatisch tot de partitie met de actieve records erin, wat veel sneller is dan zelfs het gebruik van een index op die vlag.

Hier is een voorbeeld van hoe u een gepartitioneerde tabel in Oracle kunt maken. Oracle heeft geen booleaanse kolomtypes, dus ik heb je tabelstructuur aangepast voor Oracle-doeleinden.

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)
);

Als je zou willen, zou je elke partitie in verschillende tablespaces kunnen plaatsen. Je kunt ook je indexen partitioneren.

Overigens lijkt dit een herhaling van dit vraag, als een nieuweling die ik moet stellen, wat is de procedure voor het omgaan met onbedoelde duplicaten?

Bewerken: Zoals gevraagd in opmerkingen, een voorbeeld gegeven voor het maken van een gepartitioneerde tabel in Oracle



  1. Datums, tijden en intervallen weergeven in PostgreSQL

  2. Hoe InfluxDB te installeren op Ubuntu 20.10

  3. Gematerialiseerde PostgreSQL-weergave

  4. Ontdek waar uw PHP-code vertraagt ​​(prestatieprobleem)