Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [MySQL][PHP] Optymalizacja szybkosci MySql
Forum PHP.pl > Forum > Przedszkole
Wolfie
Witam,

Mam taka tabele w bazie danych

| id | token | spamcount | hamcount |


gdzie id to wiadomo id winksmiley.jpg
token to slowo wystepujace w wiadomosci e-mail
spamcount - liczba wystapien danego slowa w wiadomosci ktora jest spamem
hamcount - liczba wystapien danego slowa w wiadomosci ktora jest ok - tzw. ham


No i teraz kwestia wyglada tak mam sobie powiedzmy 1000 wiadomosci e-mail

No i teraz kazda wiadomosc e-mail dziele na slowa i wrzucam do tej bazy ktora jest wyzej. dla kazdego slowa skrypt przelatuje przez wszystkie istniejace juz wpisy w bazie danych i sprawdza czy nie ma juz takiego slowa, jesli jest to uzupelnia odpowiednio 'spamcount' - jesli to slowo jest w liscie spam lub hamcount jesli slowo jest w liscie ham.
Problem jest taki ze po wrzuceniu ok 60 listow do tabeli powstalo mi ok 3 tys rekordow. No i teraz za kazdym razem jak wrzucam nowy list do tabeli - tzn dla kazdego slowa z tego listu musi przeleciec przez cala tabele i sprawdzic czy juz nie istnieje to slowo.
Po wrzuceniu na poczatku 5 listow na raz czas aktualizacji bazy wyniosl ok 10 sec. Gdy w bazie bylo juz ok 3tys rekordow czas ten doszedl do ok 100sec. Gdy mialem 7 tys rekordow to bylo kolo 180 sec ! 7 tys rekordow otrzymalem po wrzuceniu ok 80 listow do tabeli. A musze ich jeszcze wrzucic kilka tysiecy, wiec w tabeli bedzie kilkaset tysiecy rekordow, w takim wypadku update bazy trwalby wieki.....!

Czy da sie cos zrobic zeby szybciej updatowalo tabele ?
cojack
Oczywiście, id Ci jest nie potrzebne, rzuć primary key na token, i powinno pomóc. Albo rzuć index'a na token.
Wolfie
Wywalilem id, rzucilem indexa na token i widac znaczna poprawe, dzieki smile.gif
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.