Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]Optymalizacja: dodatkowe tabele czy złożone zapytanie MySQL
Forum PHP.pl > Forum > Przedszkole
indexx
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?
nospor
Lepiej te dane trzymać już zapisane, niż za każdym razem wyliczać je na nowo.
d3ut3r
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.
Sephirus
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ę 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ł smile.gif
indexx
Dzięki za wszystkie odpowiedzi.
Plan już mam smile.gif
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.