Załóżmy taki uproszczony przykład. Mamy 3 tabele
kolekcja_eksponatów, eksponat (zawiera klucz obcy id_kolekcji i id_kategorii), kategoria eksponatu . Kolekcja eksponatów grupuje eksponaty za pośrednictwem łączącej tabeli.
Zadanie to wyszukać kolekcje, która zawierają eksponaty TYLKO określonych kategorii - czyli jeśli np. użytkownik wybierze zabytki Egtipu, zabytki Syrii to zwrócona kolekcja nie może zawierać innych eksponatów. Użytkownik ma do wyboru około 150 kategorii i szukając kolekcji zazwyczaj wybierze około 70-120 kategorii.
Teraz pytanie czy da się jakoś uprościć (myślę tu o jakimś cache) zapytanie, tak żeby w kolekcji zapisać jakie zabytki zawiera i nie musieć szukać za każdym razem w elementach kolekcji. Myślałem o czymś na zasadzie maski bitowej, która byłaby kalkulowana dla kolekcji i zapytania i ze sobą porównywana, ale 150 kategorii to sporo i chyba na maskę za dużo?
Macie jakieś pomysły jak to obejść.
Dodam, że w prawdzimym przykładzie dotarcie do elementów składowych kolekcji jest jeszcze bardziej skomplikowane bo jest kilka tabel "po drodze", więc wyszłoby z tego jakieś masakrujące zapytanie.