Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP]dane sumaryczne - count, czy osobna tabela?
Forum PHP.pl > Forum > Przedszkole
siemieng
Zastanawiam się nad lepszym, zarówno pod względem wydajnościowym jak i lepszym logicznie rozwiązaniem dotyczącym uzyskiwania danych zbiorczych (sumarycznych) zapisanych w bazie danych, czyli np. suma artykułów w serwisie, suma użytkowników aktywnych. nieaktywnych, wszystkich itd....

Ja rozważam 2 rozwiązania:
1. oparte o osobną tabelę w bazie danych, w której miałbym dwa pola, jedno oznaczenie tego co zliczam w nim, i drugie wartość - tyle, że takie rozwiązanie w sumie może nie potrzebnie generowało by sporą ilość dodatkowych zapytań do bazy, bo każde dodanie, usunięcie artykułu w bazie wiązało by się z osobnym zapytaniem do tabeli zliczającej zwiększające lub zmniejszające od 1 odpowiednią wartość....
2. standardowe pytanie zliczające np. ilość aktywnych użytkowników, i np. funkcja count zastosowana w odniesieniu do tablicy wyniku, to jak sądzę dobry sposób przy niewielkiej ilości danych - kiedyś czytałem w jakimś artykule o optymalizacji wykorzystania bazy danych, iż taki rozwiązanie do ogromne marnowanie zasobów obliczeniowych serwera....

Innych rozwiązań jak na obecną chwilę nie mam, jakie jest wasze zdanie w tej kwestii, jak wy realizujecie takie zagadnienia?questionmark.gif
peter13135
hmm.. gdy ja zrobiłem coś takiego jak twój punkt 2 (czyli zapytanie select count(id) from...) w swoim skrypcie forum i było np 100userów, 10 tematów, 50 postów to było git, jednak gdy masowo zrobiłem kilka tysięcy postów / userów to forum drastycznie spowolniło (nawet do kilku sekund). Szukając rozwiązania zrobiłem tak jak piszesz w punkcie 1, więcej zapytań, ale jednak wszystko chodzi szybciej, dla porównania w moim przypadku czas wykonywania skyptu jest mniejszy niż 0.1, zwykle na poziomie 0.02 - 0.03s
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.