sql >> Databáze >  >> RDS >> PostgreSQL

Bitové operace v Postgresu

Použití může použít částečné indexy k vyřešení skutečnosti, že "&" není indexovatelný operátor (afaik):

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

Samozřejmě budete muset přidat nový index pokaždé, když přidáte nový typ. Což je jeden z důvodů pro rozšíření dat do asociační tabulky, kterou lze následně správně indexovat. Vždy můžete napsat spouštěče pro dodatečné udržování tabulky bitových masek, ale použijte tabulku many-to-many, abyste data ve skutečnosti normálně udržovali, protože to bude mnohem přehlednější.

Pokud celé vaše hodnocení škálování a výkonu říká „Mohu mít miliony řádků“, neudělali jste dost pro to, abyste začali používat tento druh optimalizace. Nejprve vytvořte správně strukturovaný jasný model a později jej optimalizujte na základě skutečných statistik o tom, jak funguje.




  1. Oracle:Dynamický dotaz s klauzulí IN pomocí kurzoru

  2. můžeme mít cizí klíč, který není primárním klíčem v žádné jiné tabulce?

  3. MariaDB Connector/Python Beta nyní k dispozici

  4. Databáze, která zvládne více než 500 milionů řádků