У меня есть следующие таблицы:
types | id | name
------+----+----------
1 | A
2 | B
4 | C
8 | D
16| E
32| F
и
vendors | id | name | type
--------+----+----------+-----
1 | Alex | 2 //type B only
2 | Bob | 5 //A,C
3 | Cheryl | 32 //F
4 | David | 43 //F,D,A,B
5 | Ed | 15 //A,B,C,D
6 | Felix | 8 //D
7 | Gopal | 4 //C
8 | Herry | 9 //A,D
9 | Iris | 7 //A,B,C
10| Jack | 23 //A,B,C,E
Я хотел бы сейчас запросить:
select id, name from vendors where type & 16 >0 //should return Jack as he is type E
select id, name from vendors where type & 7 >0 //should return Ed, Iris, Jack
select id, name from vendors where type & 8 >0 //should return David, Ed, Felix, Herry
Каков наилучший возможный индекс для таблиц типов
и ] производителей
в postgres? У меня могут быть миллионы строк у поставщиков. Более того, каковы компромиссы использования этого побитового метода по сравнению с отношением «многие ко многим» с использованием третьей таблицы? Что лучше?