У меня есть следующие таблицы:
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
Каков наилучший индекс для таблиц types
и vendors
в postgres? У меня могут быть миллионы строк в поставщиках. Кроме того, каковы недостатки использования этого побитового метода по сравнению с отношением «Многие ко многим», использующим третью таблицу? Что лучше?