Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [MySQL][PHP] Liczenie wierszy, Liczenie funkcją count w sql vs stworzenie zmiennej
Aloons
post
Post #1





Grupa: Zarejestrowani
Postów: 3
Pomógł: 0
Dołączył: 3.11.2017

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


Witam, jak powinno się zliczać wiersze w bazie danych?
Są mi znane 2 opcje:
1. Liczenie poprzez sql count - brak możliwości pomyłki, dłuższy czas
2. Stworzenie zmiennej która będzie aktualizowana po każdej zmianie - możliwość pomyłki, krótszy czas (np kolumny `liczba ocen` w tabeli uczen)

Powiedzmy, że mam w bazie danych tabelkę oceny i chciałbym zliczyć ilość ocen u ucznia.

Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
sabat24
post
Post #2





Grupa: Zarejestrowani
Postów: 175
Pomógł: 26
Dołączył: 13.09.2007
Skąd: Gdańsk

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


Cytat
2. Stworzenie zmiennej która będzie aktualizowana po każdej zmianie - możliwość pomyłki, krótszy czas (np kolumny `liczba ocen` w tabeli uczen)

To jest denormalizacja i stosuje się powszechnie w celach optymalizacyjnych. Wszystko zależy od rodzaju obliczeń, częstotliwości zmiany i tego jak czesto odczytujesz daną wartość. Przykładowo jeśli ktoś dodaje post na forum do tematu raz na kilka godzin, a wyświetlenie liczby postów w tematach odbywa się co parę minut, nie ma sensu tego za każdym razem obliczać.

Sama kwestia implementacji i pomyłek.
Po pierwsze możesz to wyrzucić poza logikę aplikacji i zrobić triggery w bazie, które będą aktualizować same wszystkie pola w zależności od zapytań idących do bazy.
Po drugie nie zawsze musisz inkrementować wartość o jeden po akcji dodającej. Jeśli zapis jest rzadki, odczyt częsty i nie do końca chcesz tworzyć całą logikę związaną z inkrementacją, zawsze możesz puścić COUNT po stworzeniu rekordu i zapisać tę wartość, co zwróci.
Go to the top of the page
+Quote Post

Posty w temacie


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: 26.12.2025 - 18:00