![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 417 Pomógł: 44 Dołączył: 23.06.2011 Ostrzeżenie: (0%) ![]() ![]() |
Siemka, mam plik CSV, chce go wrzucić do bazy danych. Są to rekordy, do których w przyszłości będzie dopasowywane to co użytkownik wpisał w input. Mam około 100 000 000 rekordów (stringów) co waży ponad 1GB.
System będzie działał na zasadzie użytkownik wpisuje -> system znajduje podobny. Teraz moje pytanie jak rozlokować te rekordy tak, aby wyszukiwanie trwało jak najkrócej . Myślałem o posortowaniu alfabetycznym i np powrzucaniu do różnych tabel odpowiadającym pierwszym literom stringów. Co o tym myślicie ? Ma to sens ? |
|
|
![]() |
![]()
Post
#2
|
|
Grupa: Zarejestrowani Postów: 508 Pomógł: 75 Dołączył: 2.11.2005 Skąd: Bydgoszcz Ostrzeżenie: (0%) ![]() ![]() |
Wrzucanie do wielu tabel ma sens tylko w przypadku jak siedzisz na hostingu i/albo masz mało RAMu. Jeżeli RAMu masz przynajmniej te 10-12 GB, wrzuć wszystko w jedną tabele, mądrze nadaj indeksy - jednoznaczne i główne wpływają na szybkość wyszukiwania. Do tego koniecznie dobrze poustawiać ilość cache dla mysql w pliku konfiguracyjnym (wykorzystać RAM prawie do maksimum) i będzie śmigać. Najważniejsze są poprawne indeksy trzymane bezpośrednio w RAMie.
EDIT: Jeszcze jedna rzecz. Przed wrzucaniem wszystkiego z CSV do bazy danych wyrzuć wszystkie indeksy. Nadaj je dopiero jak wszystko wrzucisz. Import trwa wtedy zauważalnie szybciej. Ten post edytował franki01 26.04.2013, 22:59:36 |
|
|
![]() ![]() |
![]() |
Aktualny czas: 13.10.2025 - 11:25 |