Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [MySQL][PHP]Optymalizacja: dodatkowe tabele czy złożone zapytanie MySQL
indexx
post 29.11.2012, 13:58:18
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
nospor
post 29.11.2012, 14:02:11
Post #2





Grupa: Moderatorzy
Postów: 36 457
Pomógł: 6296
Dołączył: 27.12.2004




Lepiej te dane trzymać już zapisane, niż za każdym razem wyliczać je na nowo.


--------------------

"Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista
"Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer

Go to the top of the page
+Quote Post
d3ut3r
post 29.11.2012, 14:02:35
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.


--------------------
http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
Go to the top of the page
+Quote Post
Sephirus
post 29.11.2012, 14:23:30
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ę 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


--------------------
If you're good at something, never do it for free.
Potrzebujesz skryptu JS lub PHP - szukasz kogoś kto przetestuje twoją aplikację pod względem bezpieczeństwa? Szybko i solidnie? Napisz ;)
Mój blog - Jak zwiększyć wydajność front-endu - O buforowaniu wyjścia w PHP słów kilka...
Go to the top of the page
+Quote Post
indexx
post 29.11.2012, 14:41:59
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 smile.gif
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 27.04.2024 - 05:48