Witam,

Chciałbym zaprezentować mój pomysł polegający na ograniczeniu połączeń wielu tabel na raz w zapytaniu.
Chodzi o to że chce pobrać z bazy pewne produkty i wyświetlić je na stronie.

Problem w tym że produktów może być sporo (nawet kilka milionów), a w celu wyświetlenia wszystkich potrzebnych danych musiałbym dodac do zapytania kilka połączeń LEFT JOIN.
Np. tabelę "produkty" muszę połączyć z tabelami:
- uzytkownicy -> w celu pobrania nazwy osoby któa umiesciłą ten produkt
- miasta -> w celu pobrania nazwy miasta z którego pochodzi produkt (w tabeli produkty trzymam tylko id miasta)
- rodzaje -> w celu pobrania nazwy typu produktu
- kategorie -> w celu pobrania nazwy katgorii

W tabeli produkty mam pola:
id | id_user | id_city | id_type | id_category | name

Sami widzicie aby wyświetlić kompletną listę z wszystkimi danymi muszę utworzyć zapytania zawierającego 5 tabel :/ trochę mało atrakcyjne rozwiązanie jeśli chodzi o wydajność.

Mój pomysł polega na tym aby utworzyc dodatkowa tabele "produkty_dane" i tutaj umiescic 2 pola: id_produktu i zserializowaną tablicę ze wszystkimi danymi które musze wyswietlić na stronie. tzn nazwa miasta, kategorii, typu, autora itd...
teraz wystarczy ze utworze zapytanie z 2 tabelami, czyli produkty i produkty_dane.
Wtedy otrzymam wszystkie informacje z tabeli produkty_dane.

Wiadomo że edycja takich elementów nie będzie jako tako możliwa.
Ewentualnie myślałem aby w produkty_dane dla każdej wartości dodać osobną kolumnę (city_name, user_name itd...)

Co o tym myślicie ? Czy macie jakieś lepsze rozwiązanie ?