Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [mysql] Zliczanie zapytań, sprawdzanie ich itd.
athabus
post 7.03.2006, 13:04:36
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:

  1. SELECT a, b, c
  2. FROM tab1,
  3. tab 2 WHERE tab1.a=tab2.b AND tab2.b=tab2.c


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
Go to the top of the page
+Quote Post
ergo
post 7.03.2006, 13:10:10
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


--------------------
Go to the top of the page
+Quote Post
athabus
post 7.03.2006, 13:17:22
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.
Go to the top of the page
+Quote Post
ergo
post 7.03.2006, 14:17:42
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, :-)


--------------------
Go to the top of the page
+Quote Post
athabus
post 7.03.2006, 14:39:41
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 worriedsmiley.gif - stad tez moje pytanie jak mozna to dokladnie sprawdzic ile dany skrypt wygenerowal zapytan.
Czy mozna jakos w ogole odczytac te zapytania - chetnie bym zobaczyl jakie zapytnia zostaly wyslane.
Go to the top of the page
+Quote Post
ergo
post 7.03.2006, 15:08:59
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


--------------------
Go to the top of the page
+Quote Post
athabus
post 7.03.2006, 16:10:49
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 sad.gif Szkoda bo teraz juz nie poprawie calego systemu - to by wymagalo zbyt duzego nakladu pracy.

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.
Go to the top of the page
+Quote Post
tiraeth
post 7.03.2006, 16:13:17
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.
Go to the top of the page
+Quote Post
acztery
post 7.03.2006, 16:22:13
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
Go to the top of the page
+Quote Post
athabus
post 7.03.2006, 17:02:35
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 sad.gif

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 rolleyes.gif

Ten post edytował athabus 7.03.2006, 17:03:09
Go to the top of the page
+Quote Post
Saddam92
post 4.03.2007, 14:04:20
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) questionmark.gif

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)...
Go to the top of the page
+Quote Post
athabus
post 4.03.2007, 14:22:37
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ą.
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 19.07.2025 - 19:29