Blackall
13.08.2009, 15:59:01
Witam,
mam do was szybkie pytanie - jak lepiej trzymać dane w bazie, aby mniej obciążyć serwer?
powiedzmy, że mam 1,2,....,n użytkowników. Każdy z nich może wybrać sobie jedno z urządzeń, które są ponumerowane w osobnej tabeli: 1,2,...,k
i teraz pytanie - jak (w kolejnej tabeli) trzymać informacje o każdym użytkowniku i jego urządzeniach - tak:
user devices
1 1,5,9,81
2 2,8,81
czy lepiej to zrobic na zasadzie:
1 1
1 5
1 9
1 81
2 2
2 8
2 81
?
w tej chwili zastosowałem to pierwsze rozwiązanie, ale czym dalej koduje, tym bardziej mnie wkurza bawienie sie z implode, explode, like... drugie rozwiazanie bedzie chyba duzo prostsze - ale czy nie obciązy bardziej bazy przy wiekszej ilosci uzytkownikow i zapytan?
Wicepsik
13.08.2009, 16:01:50
Lepiej zrób drugie rozwiązanie.
Blackall
13.08.2009, 16:03:46
rozumiem ze nie obciązy to bardziej bazy?
Fifi209
13.08.2009, 16:07:29
Cytat(Blackall @ 13.08.2009, 16:03:46 )

rozumiem ze nie obciązy to bardziej bazy?
Tak będzie znacznie lepsze.
Blackall
13.08.2009, 16:15:24
a co moge zrobic w przypadku wiadomosci?
powiedzmy ze mam wiadomosci i dotyczy ona 50 urządzen. Co wtedy? Jedną tabele z wiadomosciami i ich id, a drugą tablee na takiej samej zasadzie jak powyzej? Czyli
id device_id
1 1
1 2
1 3
1 4
.....
1 50
?
seth-kk
13.08.2009, 16:36:51
jesli dasz sobie glowe uciac ze nie bedziesz szukal uzytkownikow powiazanych z konkretnym uzadzeniem to pierwszy sposob moze byc troche szybszy i wtedy warto odwolywac sie do tych danych przez dodatkowa metode/funkcje ktora bedzie dbala o explodowanie i podobne zabiegi
jesli sie pomylisz to niedozyjesz efektow

w pozostalych przypadkach lepiej jest skozystac z drugiego sposobu i optymalizacje zostawic indeksom i systemom keszujacym