Brug kan bruge delvise indekser til at omgå det faktum, at "&" ikke er en indekserbar operator (afaik):
CREATE INDEX vendors_typeA ON vendors(id) WHERE (type & 2) > 0;
CREATE INDEX vendors_typeB ON vendors(id) WHERE (type & 4) > 0;
Selvfølgelig skal du tilføje et nyt indeks, hver gang du tilføjer en ny type. Hvilket er en af grundene til at udvide dataene til en associationstabel, som derefter kan indekseres korrekt. Du kan altid skrive triggere for at vedligeholde en bitmask-tabel yderligere, men brug mange-til-mange-tabellen til faktisk at vedligeholde dataene normalt, da det vil være meget klarere.
Hvis hele din evaluering af skalering og ydeevne skal sige "Jeg har muligvis millioner af rækker", har du ikke gjort nok for at begynde at gå efter denne form for optimering. Skab først en korrekt struktureret overskuelig model, optimer den senere på grundlag af reelle statistikker om, hvordan den klarer sig.