Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Optymalizacja układu tabel / zapytań
Forum PHP.pl > Forum > Bazy danych
athabus
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.

mmmmmmm
... HAVING COUNT(DISTINCT id_kolekcji)=1
Sorry, myslalem, ze tylko z jednej kolekcji
Ale jesli z okreslonej liczby kolekcji (przy zalożeniu, że NAJWYŻEJ z tej liczby) to tak:
... HAVING COUNT(DISTINCT id_kolekcji)<=liczba_wybranych_kolekcji
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.