![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 138 Pomógł: 1 Dołączył: 17.02.2007 Ostrzeżenie: (0%) ![]() ![]() |
Hi,
Dziś rano dostałem maila od mojej firmy hostingowej które piszę, iż posiadam skrypt wykonujący nieoptymalne zapytania - skypt MyGad 2.0 (opisy gg) - rekordów/opisów w bazie: 36 563 log przesłane przez firmę: Cytat # Time: 071106 20:30:01 # User@Host: kaszanka[kaszanka] @ localhost [] # Query_time: 5 Lock_time: 0 Rows_sent: 19 Rows_examined: 694754 use kaszanka-opisygg; SELECT c.*,count(d.id) AS count FROM mygad_categories c LEFT JOIN mygad_descs d ON (d.cat_id=c.id AND d.active="1") GROUP BY c.id ORDER BY name ASC; Ktoś się może orientuje co w tym zapytaniu jest nie tak, że potrzebuje wczytać aż 694 tysiące rekordów skoro w bazie jest tylko 36 tysięcy i wynikowych tylko 19? Mam 7 dni na optymalizację (IMG:http://forum.php.pl/style_emoticons/default/worriedsmiley.gif) |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 243 Pomógł: 32 Dołączył: 14.06.2007 Ostrzeżenie: (0%) ![]() ![]() |
Po pierwsze pozakładaj na bazę indeksy, bo tam w oryginale ich nie ma. Po drugie zrób sobie cache'owanie danych wyświetlanych na stronie głównej (menu, kategorie ostatnie opisy, najaktywniejsi użytkownicy) - ja trzymam je zserializowane w pliku, co daje znaczną optymalizację (mam zrobione automatycznie tworzenie tego pliku po jego skasowaniu - prosty sposób na wymuszenie odświeżenia po zmianie w panelu admina (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) ). Poza tym polecam przejrzenie wszystkich skryptów - poza tym że skrypty są podatne na atak SQL Injection (w newsach też XSS), jest tam też masa innych pomniejszych błędów (np. brak jednej polskiej literki w funkcji obcinającej ogonki z polskich znaków (IMG:http://forum.php.pl/style_emoticons/default/smile.gif) )
|
|
|
![]() ![]() |
![]() |
Aktualny czas: 9.10.2025 - 10:04 |