Mar 19 2009
Chwała tablicom! Czyli o tym jak można przyspieszyć rzeczy :)
Miałem za zadanie zrobić import jakiś danych o uzytkownikach z pliku tekstowego. Użytkowników w bazie już miałem (jakieś 50k rekordów), import miał za zadanie uzupełnić ich dane.
Parsowanie pliku było dość banalne. Poboierałem z niego dane (login i reszta danych), później pobierałem z bazy id usera (po loginie) i robiłem resztę rzeczy. Wszystko było super, aż do momentu odpalenia. Plik z danymi był spory, ale po pół godziny pracy import nadal się nie zakończył!
Zastanawiałem się jak to przyspieszyć. Przypomniała mi się rzecz, o której tyle razy przypominał Dooshek - użycie tablic. Na czym polega cały myk? Otóż na początku pobierałem wszystkie loginy i id userów i zapisywałem do tablicy w formacie [login] => [uid]. Podczas importu danych z pliku sprawdzałem id usera z tablicy przez co pół godzinny import wykonał się nagle w 30sek. :)
Warto o tym szczególe pamiętać. Ja już któryś raz z rzędu o tym zapomniałem, a szkoda. Straciłem trochę czasu na optymalizację mojego importu.
Przy zawrotnej liczbie rekordów pewnie nie będzie warto robić takiej tablicy (ponieważ zje zasoby :) ), ale przy jakiejś mniejszej liczbie myślę, że warto.



