![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam 3 pytania: 1) jak sprawdzić ile dana strona (skrypt) wygenerowała zapytań do mysql. Do tej pory robiłem to w phpmyadmin ale tam sprawdzajac ile prpzybylo zapytan po przeladowaniu strony, ale phpmyadmin chyba sam z siebie dodaje kilka zapytan po kazdym odswierzeniu, wiec wyniki nie sa miarodajne. Pewnie na forum juz bylo, ale szukam i szukam i nic nie moge znalezc. 2) czy jedno zapytanie np z rozbudowanym warunkiem przez mysql traktowane jest jako 1 zapytanie czy moze to jest kilka zapytan czyli np czy:
jest traktowane jako 1 zapytanie czy kilka zapytan? 3) ile zapytan ze strony to za duzo - moja strona to sklep internetowy. Wyswietla sie 10 produktow (produkty sa z roznych kategorii i maja rozne cechy - kazda kategoria ma osobna tabele cech "specjalnych"). Oczywiscie jest rowniez koszyk, menu itp. Razem wychodzi mi okolo 100 zapytan na strone prezentujaca te produkty. Wywalilem co sie dalo do sesji itd, ale sklep jest dosyc skomplikowany (jak dla mnie) i ma rozne ceny dla roznych lokalizacji, rozne rabaty na rozne produkty itp, stad rosnie liczba zapytan. Pewnie jeszcze da sie to troche zoptymalizowac ale juz chyba nie wiele. Czy 100 zapytan w takim sklepie to duzo czy ujdzie? Ten post edytował athabus 7.03.2006, 13:05:04 |
|
|
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
ha pisze sklep w ktorym jest 15 zapytan i brak table scanow :] , 100 to chyba zdecydowanie za duzo
-------------------- |
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wszystko chyba zalezy od aplikacji.
U mnie niestety jest w sumie jakies 30 kategorii produktow - kazdy moze miec inne cechy. Np jedne sa na wage, inne maja samki i jakies doatkowe cechy itp. Do tego jest klika kategorii klientow, i kilka mozliwosci realizacji dostawy - w kazdym z wariantow klientxdostawa jest inna cena dla produktow. I rozne rabaty na dany produkt. Do tego oczywiscie menu w postaci drzewka. Jest jesze kilka takich zaleznosci. Wiec do 15 zapytan na pewno nie zejde. Min 80 zapytan mi zostanie:( Nie ma paniki bo sobie wszystko przez cache puszcze wiec liczba zapytan ostatecznie nie bedzie duza, no ale wiadomo, ze zawsze mozna cos poprawic. |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
generalnie u mnie jeden produkt ma do 10-15 wlasciwosci i cech ( sklep z systemami alrmowymi wiec jest masa roznych parametrow ), i robie to 2 zapytaniami bodajze.
pozatym przeciez chyba sprawdzasz jedna konkretna mozliwosc realizacji dostawy czy tez kategorie klienta ? po co wszystkie na raz ? rabaty tez robie 1 zapytaniem, :-) -------------------- |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Wlasnie tak sobie teraz na spokojnie licze skad mi sie te wszyskie zapytania biora.
Mam strukture mniej wiecej taka (w duzym uproszczeniu) tabela produkt |cena|rabat itp|id_kategorii tabela kategorie |id_kategorii| nazwa kategorii | tabela_szczegolow (np. typ_produktu1) tabela typ_produktu1 |cecha 1|cecha 2 itd i teraz zalozmy ze na stronie sie wyswietla 10 produktow - kazdy moze byc z innej kategorii -> kazdy produkt ma id_kategorii, z kolei w tabeli kategorie mam zapisane gdzie szukac szczegolow. Zeby wyswietlic produkt musze zatem pobrac dane o produktach (1 zapytanie) + (dla kazdego z tych 10 produktow pobrac dane szczegolowe 10 zapytan) - to juz jest 11 zapytan. Dodatkowo kilak takich zapytan aby sprawdzic ile jest w ogole w bazie produktow spelniajacych dane kryteria (3-4 zapytania). Kilka zapytan do przeliczenia odpowiednich ustawien koszyka zakupowego itp. Razem wychodzi mi jakies 30 zapytan samej podstawy. W sumie sam nie wiem skad bierze mi sie reszta tych zapytan jak to sobie przemyslalem ktore mam w phpmyadmin ![]() Czy mozna jakos w ogole odczytac te zapytania - chetnie bym zobaczyl jakie zapytnia zostaly wyslane. |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 79 Pomógł: 0 Dołączył: 8.03.2005 Ostrzeżenie: (0%) ![]() ![]() |
proponuje to zrobic tak ze masz jedna tabele cech gdzie masz np.
id cechy | id kategorii przypisujesz do tabeli kategorii te cechy ktore maja byc pobierane, ( wtedy 1 zapytaniem wybierasz sobie costam select cechy where kategoria =5 przykladowo a potem masz tabele jakichstam parametrow tych cech ktore mozesz sobie wybrac zapytaniem IN (cecha1,cecha2,cecha3). a potem sobie zapisujesz dla produktu cos takiego: tabela_produkty_cechy id_produktu | id_cechy | id _parametru. a potem jak chcesz obejrzec jakis produkt to to wszystko wybierasz jednym zapytaniem z kilkoma JOIN i po krzyku. Ten post edytował ergo 7.03.2006, 15:12:44 -------------------- |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Przepisalem sobie wlasnie swoja klase dostepu do bazy zeby mi zliczala i zapisywala wszystkie zapytania, ktore wysyla do bazy w zmiennych.
Na strone z 10 produktami itd wychodzi mi 32 zapytania, takze nie jest zle - nie wiem skad mi sie bierze taka liczba jak ogladam pod phpmyadmin... Co do Twojego sposobu to o czyms takim nie pomyslalem ![]() Ale w nastepnej wersji bedzie ok czy 30-40 zapytan to nadal duzo? Chyba nie jest to tragiczna ilosc - podobno popularne skrypty takie jak phpbb czy oscommerce wywalaja wiecej. |
|
|
![]()
Post
#8
|
|
![]() Grupa: Przyjaciele php.pl Postów: 1 789 Pomógł: 41 Dołączył: 30.10.2003 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Zawsze, jeżeli istnieje możliwość, należy używać jak najmniejszej ilości zapytań do bazy danych.
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 945 Pomógł: 7 Dołączył: 15.03.2005 Skąd: katowice Ostrzeżenie: (0%) ![]() ![]() |
30-40 zapytan to za duzo. Jezeli na stronie gdzie masz 10 kategroi i masz 32 zapytania do bazy to co by bylo jak bys mial ich 30 i wypisanym pod kategoriami. ? Wydaje mi sie ze bardziej wydajnie miec na stronie glownej ok 10 zapytan. Rozwiązaniem zeby pozbyc sie paru zapytan moze menu z kategoriami na stronie glownej wpisz na sztywno w HTML . jak wejdzie sie do jakiegos dzialu to juz z mysql
PS pomysl o cachowaniu zapytan. Zawsze cos zyskasz Oczywiscie jezeli liczba odwiedzin bedzie mala nie ma co sie bawic ale jezeli bedzie duzo odwiedzic to zajedziesz serwer. PS ja na stronie mam ok 35 kategori , sesje na bazie itp idt i mam 4 zapytania Ten post edytował acztery 7.03.2006, 16:25:59 |
|
|
![]()
Post
#10
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Cytat Zawsze, jeżeli istnieje możliwość, należy używać jak najmniejszej ilości zapytań do bazy danych. To sie zgadza - tylko pytanie gdzie jest ten punkt kiedy jest ich na prawde za duzo. (wiem ze to zawsze zalezy - ale tak generalnie sie zastanawiam zeby miec poglad) Cytat 30-40 zapytan to za duzo. Jezeli na stronie gdzie masz 10 kategroi i masz 32 zapytania do bazy to co by bylo jak bys mial ich 30 U mnie akurat ilosc kategorii nie zwieksza ilosci zapytan - po prostu jest 1 zapytanie odczytujace 10 produktow i potem do kazdego produktu zapytanie odczytujace jego (czyli kategorii) dane szczegolowe. Ale chyba faktycznie to jest jeszcze za duzo ![]() No coz powalcze z tym jeszcze troche - moze zejde do 20 (juz mam 1 pomysl jak usunac 10 zapytan - ale zobacze czy dam rade). Reszte sobie do cachu wrzuce i bedzie chodzic... mam nadzieje ![]() Ten post edytował athabus 7.03.2006, 17:03:09 |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 69 Pomógł: 0 Dołączył: 17.11.2006 Ostrzeżenie: (0%) ![]() ![]() |
chciałbym z góry przeprosić za necroposting ale znalazłszy ten temat postanowiłem napisac tu:
Czy móglby ktoś powiedzieć jak zliczać te zapytania SQL (praktycznie chodzi o to samo o co pytał się athabus w punkcie pierwszym) ![]() Czy to trzeba zrobić sobie jakąś zmienna i przy kazdym wykonanym zapytaniu zwiekszac ja o 1 czy też jest jakis bardizej zautomatyzowany mechanizm (aa.. przy okazji to jeśli jest różnica to ja wykorzystuje do łaczenia sie z baza klase mysqli)... |
|
|
![]()
Post
#12
|
|
![]() Grupa: Zarejestrowani Postów: 898 Pomógł: 48 Dołączył: 2.11.2005 Skąd: Poznań Ostrzeżenie: (0%) ![]() ![]() |
Odkopaleś mój archaiczny topic ;-)
Najprościej zrobić prostą klasę do wykonywania zapytań - jedno z pól takej klasy może przechowywać informacje o liczbie wywołanych zapytań. Oczywiście przy każdym wywołaniu zapytania musisz zwiększać tą zmienną. |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 19:29 |