Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [mysql][php] Jak będzie wydajniej?
Forum PHP.pl > Forum > Przedszkole
bmL
Witam,
załóżmy, że muszę pobrać z bazy danych jakieś dane i wypisać je w jakiejś kolejności biorąc pod uwagę jakiś warunek.
I teraz co jest lepiej zrobić pobrać wszystkie dane z bazy danych i potem pętlą sprawdzić czy warunek jest spełniony dla danego wiersza czy lepiej wykonać oddzielne zapytanie dla każdego warunku.
Chyba zrozumieliście tongue.gif Może zaprezentuję na przykładzie.
Opcja 1
  1. <?php
  2. $wynik = mysql_query("SELECT `cos1`, `cos2`FROM `tabela`")
  3. while($wyniktbl = mysql_fetch_array($wynik))
  4. {
  5. if($wyniktbl[cos1] == 1warunek) echo '$wyniktbl[cos2]';
  6. }
  7.  
  8. while($wyniktbl = mysql_fetch_array($wynik))
  9. {
  10. if($wyniktbl[cos1] == 2warunek) echo '$wyniktbl[cos2]';
  11. }
  12.  
  13. while($wyniktbl = mysql_fetch_array($wynik))
  14. {
  15. if($wyniktbl[cos1] == 3warunek) echo '$wyniktbl[cos2]';
  16. }
  17. ///... no i tak xxx razy
  18. ?>


Opcja2:
  1. <?php
  2. $wynik = mysql_query("SELECT `cos2`FROM `tabela` WHERE `cos1` = '1warunek'")
  3. $wyniktbl = mysql_fetch_array($wynik)
  4. echo $wyniktbl[cos2];
  5.  
  6. $wynik = mysql_query("SELECT `cos2`FROM `tabela` WHERE `cos1` = '2warunek'")
  7. $wyniktbl = mysql_fetch_array($wynik)
  8. echo $wyniktbl[cos2];
  9.  
  10. $wynik = mysql_query("SELECT `cos2`FROM `tabela` WHERE `cos1` = '3warunek'")
  11. $wyniktbl = mysql_fetch_array($wynik)
  12. echo $wyniktbl[cos2];
  13.  
  14. /// no i to tez xxx razy
  15. ?>

W pierwszym wypadku serwer jest obciążony po przez wykonanie za każdym razem pętli a w drugim po przez wykonywanie za każdym razem zapytania.
A może jest jakiś inny lepszy sposób?
Oczywiście zakładamy, że baza danych stoi na tym samym hoscie co serw. Gdyby stała na zdalnym to raczej 2 opcja odpada jeżeli się nie myle?
sf
LOL, a czemu nie zrobisz jednego zapytania i jedną pętlę, w której sprawdzisz te 3 warunki? nie wiem jak można komplikować coś tak prostego tongue.gif
bmL
Hmm, masz rację. Chyba jednak za późno było trochę na to żeby siedzieć przy php tongue.gif
Albo chodziło mi o coś innego ale już nie pamiętam tongue.gif
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.