normalizacja bazy danych
Jak dla amatora to baza jest duża, ponad 8 milionów rekordów, około 600MB. Wyszukiwanie w niej, nawet po częściowo zaindeksowanych kolumnach trwało przynajmniej 20 sekund. Zwykle znacznie więcej. Dotarło do mnie, że taka baza to koszmarek – pól tylko pięć – id, nazwisko_imie, miasto, ulica, numer – z czego zawartość trzech jest powtarzalna. I pierwszy raz w życiu dane mi było przeprowadzić procedurę atomizacji i normalizacji bazy danych. Oddzieliłem imię od nazwiska, usunąłem niepotrzebne znaki, rozbiłem dane na pięć tabel (nazwiska, imiona, ulice, miasta oraz tabela główna). Po zaindeksowaniu wszystkiego co się dało zaindeksować baza zwiększyła się o 100%, ale wyszukiwanie teraz trwa nie więcej niż 1-2 sekundy.
I tak właśnie utraciłem swą wiarę w wydajność mysql’a.
Marzec 5th, 2007 at 13:13
Normalizacja bazy to podstawa – jeśli chcesz kogoś ukrzyżować, sprawdź czy masz gwoździe :)
Marzec 7th, 2007 at 7:05
Z każdym dniem kilka gwoździ w kieszeni mam więcej.
Marzec 8th, 2007 at 15:00
Po dalszych optymalizacjach schodzę do uzyskiwania odpowiedzi w czasie poniżej 0.1 sekundy. Jest komfort.