![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 254 Pomógł: 7 Dołączył: 9.10.2007 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
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 ? Ten post edytował Sajrox 3.07.2010, 17:58:48 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 23.08.2025 - 08:26 |