![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
witam,
chciałbym się poradzić, które rozwiązanie będzie korzystniejsze. nie chcę nic przeoczyć, a co dwie głowy to nie jedna:) w moim serwisie zalogowany użytkownik może dodawać innych do ulubionych. chciałbym, żeby w zależności od tego czy dany użytkownik jest już dodany do ulubionych był widoczny link dodaj do ulubionych albo informacja, że ta osoba jest w ulubionych. jak to sprawdzić? ja mam w głowie 2 rozwiązania: za każdym razem po wejściu na profil sprawdzać w bazie. drugie rozwiązanie jest trochę bardziej skomplikowane, bo wymaga więcej operacji. podczas logowania pobierane są z bazy ID ulubionych użytkowników i zapisywane w sesji jako tablica. przy każdym wejściu na jakiś profil sprawdzana jest ta tablica z sesji. w przypadku gdy użytkownik zostanie dodany do ulubionych tablica ta musi zostać zmodyfikowana. które rozwiązanie będzie lepsze jeżeli chodzi o wydajność? bo jeżeli mam patrzeć na łatwość implementacji to wybieram rozwiązanie pierwsze, dokładam tylko jedno zapytanie. |
|
|
![]()
Post
#2
|
|
Grupa: Przyjaciele php.pl Postów: 7 494 Pomógł: 302 Dołączył: 31.03.2004 Ostrzeżenie: (0%) ![]() ![]() |
Odpowiedz sobie na pytanie: A jak często użytkownik będzie wchodził do profilu?
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 411 Pomógł: 35 Dołączył: 27.06.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Pierwsze jest prostsze w implementacji i szybsze.
Dane sesji przecież są trzymane zazwyczaj na dysku lub w bazie, więc tak czy siak musi być wykonany odczyt. Jakbyś chciał sobie odciążyć bazę to musiałbyś te dane w ciasteczkach trzymać, co IMHO jest bez sensu. Ten post edytował legorek 27.11.2008, 00:16:35 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 411 Pomógł: 35 Dołączył: 27.06.2004 Skąd: Kraków Ostrzeżenie: (0%) ![]() ![]() |
Naprawdę nie masz co kombinować. Zakładając że tabela ma strukturę zawierającą dwa pola user_id, ulubiony_user_id to zapytanie jest tak mało zasobożerne, że nie widzę powodów dla szukania czegoś w zastępstwie. Nie wykonujesz żadnych złączeń, transfer między bazą a php jest znikomy, a warunek wyszukiwania operuje na indeksie. Wydaje mi się, że jakiekolwiek inne operacje potrwają dłużej.
|
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
skoro tak mówisz:)
a tak przy okazji, to ile zapytań jest powiedzmy w normie? 16 zapytań to nie jest lekka przesada? |
|
|
![]()
Post
#7
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Hmm, kwestia sporna, ale IMHO wydaje mi się, że trochę za dużo... To naprawdę zależy od tego, jakie zapytania wykonujesz i jak masz pozakładane indeksy.
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 4 465 Pomógł: 137 Dołączył: 26.03.2004 Skąd: Gorzów Wlkp. ![]() |
To ie hydepark - przenosze na php
16 to norma (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) |
|
|
![]()
Post
#9
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat 16 to norma Moze w joomli...
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
16 może norma, ale widać, że za mało cache'ujesz. (IMG:http://forum.php.pl/style_emoticons/default/tongue.gif)
|
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
jeszcze w Symfony nie doszedłem do tego jak robić cache dla pojedyńczych zapytań;) a całego widoku nie mogę zapisywać w cache bo dla każdego zalogowanego użytkownika może to wyglądać inaczej.
a w Joomli 16 zapytań to jest chyba wtedy gdy nie dorzuci się do niej więcej dodatków. ja mam między innymi 6 zapytań, które tylko liczą, indeksy pozakładane na kolumnach z warunków. zobaczymy w praktyce jak to będzie wyglądać:) |
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat ja mam między innymi 6 zapytań, które tylko liczą, czasami takie 6 zapytan mozna zastapic jednym - zależy co liczą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 1 385 Pomógł: 55 Dołączył: 1.03.2005 Skąd: śląsk Ostrzeżenie: (0%) ![]() ![]() |
czasami takie 6 zapytan mozna zastapic jednym - zależy co liczą (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg) tak, wiem o tym:) ale gorzej jak są one porozrzucane w kilku miejscach aplikacji:) czasem są wykonywane tylko 2, a czasem właśnie te 6. nie zawsze można je połączyć. ale co się da to połączę:) tylko zastanawiałem się czy rzeczywiście to wpłynie pozytywnie na wydajność. np. 2 zapytania
vs. jedno
|
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 15 467 Pomógł: 1451 Dołączył: 25.04.2005 Skąd: Szczebrzeszyn/Rzeszów ![]() |
Cytat ale gorzej jak są one porozrzucane w kilku miejscach aplikacji:) czasem są wykonywane tylko 2, a czasem właśnie te 6. nie zawsze można je połączyć. ale co się da to połączę:) A stored procedures? |
|
|
![]()
Post
#15
|
|
Grupa: Moderatorzy Postów: 36 559 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat tylko zastanawiałem się czy rzeczywiście to wpłynie pozytywnie na wydajność. Tak.Przy dwoch zapytaniach musisz doliczyc chociazby dwukrotny czas wyslania ządania do mysql i spowrotem. Przy jednym masz tylko jedno. Akurat osobiscie twoje dwa zapytania zastąpilbym jednym union. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 26.09.2025 - 18:12 |