Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP]Optymalizacja: dodatkowe tabele czy złożone zapytanie MySQL
indexx
post
Post #1





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Witam

Zastanawiam się w jaki sposób rozwiązać zliczanie i ewentualne składowanie(o ile potrzebne) danych użytkownika.

Powiedzmy, że użytkownik ma jakąś pulę dodanych postów, posty mają jakąś ocenę, dodał ileś komentarzy itp

Czy warto dla takich danych tworzyć dodatkową tabelę np. user_stat, która będzie aktualizowana podczas dodawania postu, oceniania lub komentowania czy lepiej pobierać dane zliczając za pomocą COUNT() i SUM()?

A może rozwiązać to na zasadzie działania tabeli user_meta w wordpresie, że konkretną statystyką nie jest nazwa kolumny tylko wybrany wiersz?

Macie może jakieś doświadczenia z podobnych sytacji?

Ten post edytował indexx 29.11.2012, 14:01:21
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi (1 - 4)
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Lepiej te dane trzymać już zapisane, niż za każdym razem wyliczać je na nowo.
Go to the top of the page
+Quote Post
d3ut3r
post
Post #3





Grupa: Zarejestrowani
Postów: 709
Pomógł: 176
Dołączył: 24.10.2010

Ostrzeżenie: (0%)
-----


Moim zdaniem bardziej opłaca się trzymać takie dane osobno niż zliczać je za każdym razem. Nie koniecznie musi to być osobna tabela mogą to być po prostu dodatkowe kolumny.
Go to the top of the page
+Quote Post
Sephirus
post
Post #4





Grupa: Zarejestrowani
Postów: 1 527
Pomógł: 438
Dołączył: 28.06.2011
Skąd: Warszawa

Ostrzeżenie: (0%)
-----


Zgadzam się z przedmówcami w 100% ale dodam, że takie coś aby działało najwydajniej musi być zaplanowane już w fazie projektowania. Najlepiej trzymać w jednym wierszu tak jak napisałeś dane o licznikach różnych rzeczy i przy dodawaniu/edycji/usuwaniu takich rzeczy odpowiednio modyfikować te liczniki tak by pokrywały się z rzeczywistymi wartościami.

Kombinowanie z cache'm, cronami itd. w takim przypadku sprawi, że dane nie będą aktualne. Zliczanie wszystkiego każdorazowo dobije bazę (IMG:style_emoticons/default/smile.gif)

jak zrobisz taki systemik to dobrze jest zrobić sobie dodatkowy widok w bazie w którym odpowiednim zapytaniem uzyskasz taką samą tabelę jak ta z wartościami liczników - wówczas bardzo łatwo jest w razie czego porównać czy liczniki dobrze działają - jest to jednak rzecz do manualnego testowania bo widok będzie oczywiście obciążał (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
indexx
post
Post #5





Grupa: Zarejestrowani
Postów: 120
Pomógł: 0
Dołączył: 20.06.2008

Ostrzeżenie: (0%)
-----


Dzięki za wszystkie odpowiedzi.
Plan już mam (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 10.10.2025 - 09:13