Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MySQL] Pomoc w przerobieniu jednego zapytania
Forum PHP.pl > Forum > Bazy danych > MySQL
vodkon
Otóż obecne zapytanie nie wiedzieć czemu wykonuje się prawie 40s (1and1 hosting) na localhost trwa 0.8s (webserv)

Jak można by było przerobić oto takie zapytanie. Proszę o bardzo szybką odpowiedz! z góry dziękuje smile.gif

  1. SELECT * FROM log WHERE id IN (SELECT MAX(id) FROM log GROUP BY z, login) AND prolog = '71' ORDER BY id DESC


chodzi o to że po usunięciu " id IN (SELECT MAX(id) FROM log GROUP BY z, login) " ładowanie trwa kilka mili sekund..
sazian
1)problem niema związku z php wink.gif
2)sprawdź indeksy
3)pokarz explain
Kshyhoo
Cytat(sazian @ 11.05.2014, 14:45:49 ) *
1)problem niema związku z php wink.gif

Przenoszę.
bpskiba
pytanie jest źle napisane. Operator IN jest bez sensu, czemu ma służyć grupowanie?questionmark.gif

może tak:
  1. SELECT * FROM LOG
  2. WHERE
  3. prolog='71'
  4. ORDER BY id DESC
  5. LIMIT 1
mmmmmmm
@bpskiba, to co napisałeś to ZUPEŁNIE różne zapytanie. Twoje zwróci jeden rekord, a @vodkona w założeniach ma zwracać najświeższe rekordy wg "z, login".
@vodkon - spróbuj tak:
  1. SELECT * FROM log JOIN (SELECT z, login, MAX(id) id FROM log GROUP BY z, login) sub ON sub.id=log.id WHERE prolog = '71' ORDER BY id DESC

Gdyby działało nadal długo to:
1. index na "z, login"
2. index na "prolog"
3. dorzucenie "WHERE prolog='71'" do sub
4. całkowita zmiana zapytania
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.