sql >> Database >  >> RDS >> PostgreSQL

Bitsgewijze bewerkingen in Postgres

Gebruik kan gedeeltelijke indexen gebruiken om het feit te omzeilen dat "&" geen indexeerbare operator is (afaik):

CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;

Natuurlijk moet je elke keer dat je een nieuw type toevoegt een nieuwe index toevoegen. Dat is een van de redenen om de gegevens uit te breiden tot een associatietabel die vervolgens goed kan worden geïndexeerd. U kunt altijd triggers schrijven om een ​​bitmaskertabel bij te houden, maar gebruik de veel-op-veel-tabel om de gegevens eigenlijk normaal te onderhouden, omdat dit veel duidelijker zal zijn.

Als je hele evaluatie van schalen en prestaties zegt:"Ik heb misschien miljoenen rijen", heb je niet genoeg gedaan om voor dit soort optimalisatie te gaan. Maak eerst een goed gestructureerd helder model, optimaliseer het later op basis van echte statistieken over hoe het presteert.




  1. Gegevens ophalen met een hiërarchische structuur in MySQL

  2. Java - datum opgeslagen als de dag ervoor

  3. Vervang alle velden in MySQL

  4. Hoe een schema door meerdere gebruikers te gebruiken zonder de schemanaam voor de objecten vooraf te fixeren?