Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Skrypt się długo wykonuje (zapytanie SQL)
Forum PHP.pl > Forum > PHP
wddigital
Dlaczego takie coś:

  1. $q = mysql_query('SELECT * FROM `tabela1` WHERE `uzytkownik`="'.$nick.'" ORDER BY `id` DESC LIMIT 25');
  2. while($q1 = mysql_fetch_array($q))
  3. {
  4. $q2 = mysql_query('SELECT data1, data2 FROM `tabela2` WHERE `pole1`="'.$q1['dane1'].'" AND `pole2`="'.$q1['dane2'].'" ORDER BY `data1` DESC LIMIT 1');
  5. }


Wykonuje mi się około 8-10 sekund? Jest to bardzo niewygodne w przeglądaniu moich rekordów, a tak nie powinno być. Gdzie leży błąd?
Sephirus
To jest jeden z najczęstszych błędów...

I to taki fajny który skaluje się wraz ze wzrostem rekordów w tabeli 'tabela1' smile.gif

Dajesz limit 25... czyli robisz 1 zapytanie a potem 25 kolejnych.

10 sekund / 26 daje jakieś ~400 ms na zapytanie - stąd też wnioskuje że możesz mieć dodatkowy problem z indeksami.

Rozwiązanie:
1. Zapoznaj się z JOIN w MySQL
2. Sprawdź czy pola używane w WHERE, ON, ORDER mają ustawiony INDEX.
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.