Nogle svar:
-
20 millioner rækker er godt inden for MySQL's kapacitet. Jeg arbejder på en database, der har over 500 millioner rækker i en af dens tabeller. Det kan tage timer at omstrukturere en tabel, men almindelige forespørgsler er ikke et problem, så længe de er assisteret af et indeks.
-
Din bærbare computer er temmelig forældet og underpowered til at bruge som en højskala databaseserver. Det kommer til at tage lang tid at lave en tabelomlægning. Den lave mængde hukommelse og typisk langsomme bærbare diske er sandsynligvis begrænsende for dig. Du bruger sandsynligvis også standardindstillinger for MySQL, som er designet til at fungere på meget gamle computere.
-
Jeg vil ikke anbefale at bruge
TEXT
datatype for hver kolonne. Der er ingen grund til, at du skal brugeTEXT
for de fleste af disse kolonner. -
Opret ikke et indeks for hver kolonne, især hvis du insisterer på at bruge
TEXT
datatyper. Du kan ikke engang indeksere enTEXT
kolonne, medmindre du definerer et præfiksindeks . Generelt skal du vælge indekser til at understøtte specifikke forespørgsler.
Du har sikkert mange andre spørgsmål baseret på ovenstående, men der er for meget at dække i et enkelt StackOverflow-indlæg. Du vil måske tage uddannelse eller læse en bog, hvis du skal arbejde med databaser.
Jeg anbefaler Høj ydeevne MySQL, 2. udgave
.
Til dine opfølgende spørgsmål:
For MySQL-tuning er her et godt sted at starte:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/
Mange ALTER TABLE-operationer forårsager en tabelomstrukturering, hvilket grundlæggende betyder at låse tabellen, lave en kopi af hele tabellen med de anvendte ændringer og derefter omdøbe de nye og gamle tabeller og slippe den gamle tabel. Hvis bordet er meget stort, kan det tage lang tid.
En TEKST-datatype kan gemme op til 64KB, hvilket er overkill for et telefonnummer eller en tilstand. Jeg ville bruge CHAR(10) til et typisk amerikansk telefonnummer. Jeg ville bruge CHAR(2) til en amerikansk stat. Generelt skal du bruge den mest kompakte og sparsommelige datatype, der understøtter den række af data, du har brug for i en given kolonne.