[MySQL][PHP]Optymalizacja: dodatkowe tabele czy złożone zapytanie MySQL |
[MySQL][PHP]Optymalizacja: dodatkowe tabele czy złożone zapytanie MySQL |
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 |
|
|
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 |
|
|
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!
|
|
|
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ę 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ł -------------------- 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... |
|
|
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 |
|
|
Wersja Lo-Fi | Aktualny czas: 27.04.2024 - 05:48 |