![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Bełchatów Ostrzeżenie: (0%) ![]() ![]() |
Witam,
mam problem z prędkością wykonywania zapytania. Cron uruchamia skrypt codziennie i jeżeli zajdą pewne warunki to przepisuje wartości z jednej kolumny do drugiej. W tabeli jest póki co ok. 37 tyś rekordów. Problem w tym, że przepisywanie trwa bardzo długo, tj. tylko 2tyś rekordów na minutę. Wydawało mi się, że taka nieskomplikowana rzecz powinna trwać parę sekund. Na początku myślałem, że to wina pythona, dlatego przepisałem to na php, ale wciąż to samo. Sam kod do przepisywania wygląda tak:
Całość wykonuje się na serwerach home.pl, więc nie powinno być dużych opóźnień. Co o tym sądzicie? Da się to jakoś przyspieszyć, czy taka "prędkość" to norma? Edit: Zmieniłem warunek po którym edytujemy wpisy z name na uid i... idzie o niebo szybciej. Taki głupi błąd :/ Ten post edytował Radek_1 1.09.2011, 20:32:16 |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 54 Pomógł: 0 Dołączył: 9.09.2003 Skąd: Bełchatów Ostrzeżenie: (0%) ![]() ![]() |
mortus, doskonale rozumiem co napisałeś wcześniej. Powtórzę jeszcze raz, sprawdzanie czy nastąpiła aktualizacja rekordu przy pomocy mysql_affected_rows() jest _wolniejsze_ niż sprawdzenie czy rekord istnieje i późniejsza ewentualna aktualizacja/wstawienie.
Tj. szybciej jest: 1. Sprawdzić czy użytkownik istnieje 2. Zaktualizować jeżeli istnieje 3. Wstawić nowy rekord jeżeli nie istnieje Niż: 1. Zaktualizować rekord 2. Sprawdzić mysql_affected_rows() czy nastąpiła aktualizacja (w przypadku gdy użytkownik nie istnieje to go nie zaktualizuje, no bo jak?) 3. Wstawić nowy rekord jeżeli nie nastąpiła aktualizacja. Cytat Nie zmienia to faktu, że lepiej do wyszukiwania użytkownika nadawałaby się kolumna UID aniżeli name, oraz że obie te kolumny powinny być unikalne i śmiało można nałożyć na nie indeksy, co przyspieszy nieco działanie skryptu. W jaki sposób wyszukiwać po UID? Skoro strona na której sprawdzam czy ktoś jest online jest niezależna ode mnie i napisane są na niej tylko i wyłącznie nazwy? A co do name to nadałem index i jest unikalna (IMG:style_emoticons/default/smile.gif) Ten post edytował Radek_1 4.09.2011, 18:30:15 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 2.10.2025 - 19:35 |