![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 118 Pomógł: 0 Dołączył: 14.02.2004 Skąd: Warszawa Ostrzeżenie: (10%) ![]() ![]() |
Witam, posaidam dwie tabele po około 2500 rekordów każda. Zapytanie wygląda tak:
I teraz aby wyświetlić 9 rekoród potrzebuje 23 sekund... to jest o wiele za długo! totalna masakra. Czy ktoś ma pomysł jak to przyspieszyć? Tak dla wyjaśnienia używam adodb oraz smartów. |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 103 Pomógł: 0 Dołączył: 1.12.2003 Skąd: Gdynia Ostrzeżenie: (0%) ![]() ![]() |
Cytat(mhs @ 2005-11-03 16:12:56) Cytat(Synaps @ 2005-11-03 11:33:38) zrezygnuj z ORDER BY i sortowanie zrób na poziomie php'a. Być może usuwając ORDER BY w zapytaniu faktycznie cos przyspieszysz wykonanie samego zapytania, jednak przerzucajac to na poziom php na pewno więcej stracisz niż zyskasz. Wszystkie (może prawie wszystkie) operacje jakie możliwe są na zrzucenie na system zarządzania bazą powinny być wykonane przez to właśnie oprogramowanie.
Nie wiem jak dokładnie działa proces przetwarzania zapytań z LIMIT w MySQL'u ale podejrzewam ze w pierwszej fazie w przykładzie który tutaj mamy sortowany jest cały kursor z wynikiem. Jeśli jest to załóżmy hipotetycznie 25k rekordow, to proces sortowania zacząco wydłuży czas zwrócenia ostatczenego wyniku. Dlatego zasugerowałem żeby użyć sortowania po stronie php'a bo widziałem że z tego kursora wybierane są bardzo małe w porównaniu z kursoerm ilości rekordów. Ale można tak sobie gdybać (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) Dlatego moją sugestią jest sprawdzenie jak zachowa się zapytanie bez ORDER BY. Jest to jeden z hintów do tunningu zapytanka. jednak jak już było tutaj wspomniane bez dokładnych info. o strukturze tabeli i relacjach nie da się dać konkretnej odpowiedzi. Jednak zgodze się z Tobą mhs w 100% że bardzo dobrą i wskazaną praktyką jest przerzucenie jak największej ilości operacji przetwarzania informacji na baze danych. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 5.10.2025 - 00:43 |