Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php] optymalizacja zapytań
Forum PHP.pl > Forum > PHP
Lejto
Mam kod który pobiera mi dane do galerii zawiera on jednak sporo zapytań.
Mogę go trochę zoptymalizować?
  1. $id = (int)$_GET['id'];
  2. $liczba = 2;
  3. $id = (int)$_GET['id'];
  4. $liczba = 2;
  5. $sql = $db->query('select * from galeria_foto where kategoria = "'.$kat.'" and id = "'.$foto.'"');
  6. $row = $sql->fetch_array();
  7. $numer = $row[numer];
  8.  
  9. $sql = $db->query('select * from galeria_foto where kategoria = "'.$kat.'" and id = "'.$foto.'"');
  10. $num = $sql->num_rows;
  11. $ile = ceil($num/$liczba);
  12.  
  13. if(!isset($_GET['id'])) $_GET['id'] = 0;
  14. $strona = (int)$_GET['id'];
  15.  
  16.  
  17. $q = $db->query('SELECT `id` FROM `galeria_foto` WHERE `id` > "'.$foto.'" ORDER BY `id` ASC');
  18. $wiersz = $q->fetch_array();
  19.  
  20. $quer = $db->query('SELECT `id` FROM `galeria_foto` WHERE `id` < "'.$foto.'" ORDER BY `id` DESC');
  21. $wiersz_2 = $quer->fetch_array();
  22.  
  23. $sql = $db->query('select * from galeria_foto where id = "'.$foto.'"');
  24. $num = $sql->num_rows;
  25. $ile = ceil($num/$liczba);
  26.  
  27. if(!isset($_GET['id'])) $_GET['id'] = 0;
  28. $strona = (int)$_GET['id'];
  29.  
  30.  
  31. $q = $db->query('SELECT `id` FROM `galeria_foto` WHERE `id` > "'.$foto.'" ORDER BY `id` ASC');
  32. $wiersz = $q->fetch_array();
  33.  
  34. $quer = $db->query('SELECT `id` FROM `galeria_foto` WHERE `id` < "'.$foto.'" ORDER BY `id` DESC');
  35. $wiersz_2 = $quer->fetch_array();
  36.  
  37. $zap = $db->query('select name,id from galeria_kategorie where id = "'.$kat.'"');
  38. $r = $zap->fetch_array();


Pozdrawiam
Fifi209
Najpierw nasuwa się pytanie jakiej biblioteki do połączenia z bazą używasz.

i drugie:

  1. $sql = $db->query('select * from galeria_foto where kategoria = "'.$kat.'" and id = "'.$foto.'"');


czemu dwa razy?
thek
No jasne że możesz. Zauważ, że nawet nie używasz czegoś takiego jak limit, choć wszędzie pobierasz tylko jeden wiersz. Nawet nie mówię, że pewne zapytania się dublują. Ja bym powiedział, że ów kod jest naprawdę bardzo nieoptymalny i zupełnie inaczej bym go napisał nie dlatego, że zapytania są źle napisane, ale już sam kod php jest w wielu miejscach bezsensowny. Całe linijki kodu produkują te same dane, choć są zbędne i wystarczy je wykonać raz. Popatrz ile razy sprawdza Ci zmienną $_GET[id] i liczy kompletnie zbędnie $strona. Co Ci daje w 10 linii liczenie ilości wierszy wyniku skoro w zapytaniu szukasz rekordu z konkretnym id, czyli będzie tam zawsze 0 albo 1. Takich nielogiczności masz więcej w raptem nie 40 linijkowym kodzie... Musisz go mocno pozmieniać by był optymalny.

EDIT: W zasadzie jakoś połowa tego kodu jest zbędna winksmiley.jpg
scanner
To mi przypomina kod pewnego serwisu, który ostatnio zamknęła policja.
Już same 4 pierwsze linijki świadczą o tym, że kod pisał jakiś pomyleniec
  1. $id = (int)$_GET['id'];
  2. $liczba = 2;
  3. $id = (int)$_GET['id'];
  4. $liczba = 2;

W tak prostym kodzie powtórzenia?
taro
Zamiast

SELECT * ...

(zamiast gwiazdki) proponuje też wstawić nazwy kolumn.
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.