Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Zbyt długi czas wykonywania skryptu.
Forum PHP.pl > Forum > PHP
Sajrox
Witam,

Mam problem wyciąganiem danych z bazy. Po napisaniu przykładowego zapytania które wygląda tak:

  1. SELECT p.id,p.name,p.`short_text`,count(ps.id) AS offers FROM pco_product AS p LEFT JOIN pco_product_shop AS ps ON p.id = ps.id_product WHERE (p.id_category IN (1287) AND (ps.date_checked_import >= ps.date_last_shop_import)) GROUP BY ps.id_product ORDER BY offers DESC LIMIT 0, 10

lub
  1. SELECT p.id,p.name,p.short_text, ps.link, ps.price FROM pco_product AS p LEFT JOIN pco_product_shop AS ps ON p.id = ps.id_product WHERE (p.id_category IN (1287)) AND (ps.date_checked_import >= ps.date_last_shop_import) ORDER BY offers DESC LIMIT 0, 10


i inne tym podobne zapytania związane z tymi 2 tabelami.

Skrypt potrafi się wykonywać bardzo długo (nawet kilkanaście sekund).

Dodam że zaczęło się tak dziać w momencie gdy do bazy doszło 20 000 produktów.
W przypadku gdy było ich kilka wszystko działało sprawnie.

Dla mnie jest to bardzo dziwne ponieważ zapytanie jest jest zbyt skomplikowane. Po złączeniu 2 tabel po około 25 000 krotek wszystko się wykonuje bardzo długo. Dlaczego się tak dzieje ? Ktoś miał podobny problem ?

Typ tabeli to MyIsam.
W każdej z tabel jest dużo pol po około 20.

Przy wykonaniu zapytania bezpośrednio w phpMyAdminie czasy są ok na poziomie 0.4 s.

Jednak gdy wykonam to samo zapytanie w
  1. <?php
  2. ?>
to skrypt albo się zawiesza albo wykonuje się bardzo długo.
MWL
może to wina serwera, spróbuj wkonać to za pomoca php my admin
scanner
Czytać ze zrozumieniem nie nauczyli? Przecież pisze wyraźnie:
Cytat
Przy wykonaniu zapytania bezpośrednio w phpMyAdminie czasy są ok na poziomie 0.4 s.


Sajrox: Czy samo *query() się tak długo wykonuje, czy cały skrypt?
Sajrox
No właśnie samo mysql_query().
Stworzyłem pusty dokument w którym połaczylem się z bazą y przez mysql_query() wykonałem powyższe 2 zapytania. I w wyniku mam zawieszoną przeglądarkę. Wszystko robię na localhoscie. Dziwne bo zapytanie nie jest skomplikowane. Może to wina złego zaprojektowania bazy w co także wątpie.
Po prostu jakieś czary mary :/

Pracując na innym skrypcie i innej bazie wszystko działa bardzo dobrze, dlatego to nie wina Apache. Kurcze już wpadam w mała depresje bo naprawde załamuję recę w tym momencie.
erix
A próbowałeś uaktualnić libmysql.dll?
Sajrox
Nie bardzo. A w czym to może dokładnie pomóc ?
Pilsener
A zapytanie tego typu:
  1. SELECT COUNT(*) FROM pco_product


Ile czasu CI się w PHP wykonuje? A zapytania do innej tabeli i innej bazy także? Spróbuj też włączyć wyświetlanie wszystkich warningów i notice'ów.
erix
Cytat
A w czym to może dokładnie pomóc ?

W tym, że ta biblioteka odpowiada za komunikację PHP z MySQL (klient). Jeśli się "żre"/jest za stara, to może się dziać coś takiego. Spróbuj, nie zaszkodzi.
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.