![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 17.07.2008 Ostrzeżenie: (0%) ![]() ![]() |
Witam wszystkich.
Od jakiegoś czasu zastanawiam się nad sposobem zliczania różnych rekordów i ciekawy jestem jakie rozwiązania stosujecie. Przykładowo mamy tabele "jakiś" produktów, w tabelce są informacje np 3 kolumny (id, nazwa_produktu, user) i wchodząc na odpowiednią stronę użytkownik widzi "ilość swoich produktów" (np 300). Czy aby stworzyć taki licznik używacie zapytań SQL polegających na "zliczaniu rekordów" np. SELECT COUNT(*) FROM tabela WHERE user='ktoś tam'..... albo inne zapytania (tu prosił bym o wskazanie najbardziej wydajnego). ...Czy, może zamiast tego stosujecie osobną tabele o nazwie np "liczniki" i tam w odpowiedniej kolumnie za każdym razem zwiększana lub zmniejszana zostaje wartość (+1 lub -1) gdy użytkownik dodaje lub odejmuje "jakiś" produkt. Przy takim układzie nie było by już później potrzeby "zliczania" rekordów tylko wystarczyło, by wyświetlić wartość odpowiedniej komórki. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Każdy przypadek trzeba rozważać indywidualnie. Jeżeli produktów jest bardzo dużo, to przydatniejsze będzie trzymanie takich danych w innym miejscu. Aktualizacja licznika następowałaby tylko przy zaplanowanej zmianie ilości rekordów przez zdefiniowaną do tego funkcję. Jeżeli rekordów jest mało, a ilość wizyt nie jest pokaźna, nie warto bawić się w takie rzeczy i marnować czas i miejsce na dysku. Osobiście wolę przetrzymywanie danych o rekordach w innej tabeli i wyciąganie jej razem z całym artykułem albo newsem. Do tego klasa aktualizująca wywoływana przy każdej zaplanowanej zmianie ilości rekordów + na wszelki wypadek cron i śmiga jak ta lala.
EDIT: Aktualizacja ilości powiązanych rekordów, powinna odbywać się za każdym razem poprzez "SELECT COUNT(*) FROM tabela WHERE id_czegos=1", a nie dodawanie i odejmowanie od poprzedniej wartości. Ten post edytował franki01 5.09.2009, 00:04:38 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 12.10.2025 - 10:09 |