Niektóre odpowiedzi:
-
20 milionów wierszy mieści się w zakresie możliwości MySQL. Pracuję na bazie danych, która ma ponad 500 milionów wierszy w jednej ze swoich tabel. Restrukturyzacja tabeli może zająć wiele godzin, ale zwykłe zapytania nie stanowią problemu, o ile są wspomagane przez indeks.
-
Twój laptop jest dość przestarzały i nie nadaje się do wykorzystania jako serwer bazy danych na dużą skalę. Przebudowa tabeli zajmie dużo czasu. Mała ilość pamięci i zazwyczaj wolny dysk laptopa prawdopodobnie Cię ograniczają. Prawdopodobnie używasz również domyślnych ustawień MySQL, które są przeznaczone do pracy na bardzo starych komputerach.
-
Nie polecałbym używania
TEXT
typ danych dla każdego kolumna. Nie ma powodu, dla którego potrzebujeszTEXT
dla większości tych kolumn. -
Nie twórz indeksu dla każdej kolumny, zwłaszcza jeśli nalegasz na używanie
TEXT
typy danych. Nie możesz nawet zindeksowaćTEXT
kolumna, chyba że zdefiniujesz indeks prefiksu . Ogólnie wybieraj indeksy do obsługi określonych zapytań.
Prawdopodobnie masz wiele innych pytań na podstawie powyższego, ale w jednym poście na StackOverflow jest zbyt wiele do omówienia. Możesz wziąć udział w szkoleniu lub przeczytać książkę, jeśli zamierzasz pracować z bazami danych.
Polecam Wysokowydajny MySQL, 2. edycja
.
Powtórz pytania uzupełniające:
Aby dostroić MySQL, warto zacząć od tego miejsca:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-install/
Wiele operacji ALTER TABLE powoduje restrukturyzację tabeli, co oznacza w zasadzie zablokowanie tabeli, wykonanie kopii całej tabeli z zastosowanymi zmianami, a następnie zmianę nazwy nowej i starej tabeli oraz usunięcie starej tabeli. Jeśli stół jest bardzo duży, może to zająć dużo czasu.
Typ danych TEKST może przechowywać do 64 KB, co jest przesadą w przypadku numeru telefonu lub stanu. Użyłbym CHAR(10) dla typowego numeru telefonu w USA. Użyłbym CHAR(2) dla stanu USA. Ogólnie rzecz biorąc, używaj najbardziej zwartego i oszczędnego typu danych, który obsługuje zakres danych, których potrzebujesz w danej kolumnie.