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. |
|
|
|
![]() |
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. |
|
|
|
Aloons [MySQL][PHP] Liczenie wierszy 3.11.2017, 20:59:47
Tomplus A co wpisujesz w COUNT?
bo najlepiej użyć
KodSELEC... 3.11.2017, 21:40:02 
Aloons Cytat(Tomplus @ 3.11.2017, 21:40:02 )... 3.11.2017, 21:53:25
Tomplus Ale tutaj nie ma nic więcej, może co najwyżej jesz... 4.11.2017, 10:36:25
viking Widok zmaterializowany.... oh, wait. To mySQL 4.11.2017, 11:51:48
Aloons ok, dzięki za odpowiedzi
@Tomplus trochę źle zroz... 4.11.2017, 17:44:13 ![]() ![]() |
|
Aktualny czas: 26.12.2025 - 18:00 |