Enkele antwoorden:
-
20 miljoen rijen is ruim binnen de mogelijkheden van MySQL. Ik werk aan een database met meer dan 500 miljoen rijen in een van de tabellen. Het kan uren duren om een tabel te herstructureren, maar gewone zoekopdrachten zijn geen probleem zolang ze worden ondersteund door een index.
-
Uw laptop is behoorlijk verouderd en heeft te weinig kracht om als grootschalige databaseserver te gebruiken. Het zal lang duren om een tafel te herstructureren. De lage hoeveelheid geheugen en de doorgaans trage laptopschijf beperken u waarschijnlijk. U gebruikt waarschijnlijk ook standaardinstellingen voor MySQL, die zijn ontworpen om te werken op zeer oude computers.
-
Ik zou het gebruik van
TEXT
niet aanraden gegevenstype voor elke kolom. Er is geen reden waarom jeTEXT
nodig hebt voor de meeste van die kolommen. -
Maak niet voor elke kolom een index, vooral niet als u erop staat
TEXT
te gebruiken gegevens typen. Je kunt niet eens eenTEXT
index indexeren kolom tenzij u een prefixindex definieert . Kies in het algemeen indexen om specifieke zoekopdrachten te ondersteunen.
Je hebt waarschijnlijk veel andere vragen op basis van het bovenstaande, maar er is te veel om in een enkele StackOverflow-post te behandelen. Misschien wil je een training volgen of een boek lezen als je met databases gaat werken.
Ik raad High Performance MySQL, 2e editie
.
Over uw vervolgvragen:
Voor het afstemmen van MySQL is dit een goede plek om te beginnen:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/
Veel ALTER TABLE-bewerkingen veroorzaken een tabelherstructuur, wat in feite betekent dat de tabel wordt vergrendeld, een kopie wordt gemaakt van de hele tabel met de aangebrachte wijzigingen, en vervolgens de nieuwe en oude tabellen hernoemt en de oude tabel laat vallen. Als de tafel erg groot is, kan dit lang duren.
Een TEKST-gegevenstype kan tot 64 KB opslaan, wat overdreven is voor een telefoonnummer of een staat. Ik zou CHAR (10) gebruiken voor een typisch Amerikaans telefoonnummer. Ik zou CHAR (2) gebruiken voor een Amerikaanse staat. Gebruik in het algemeen het meest compacte en zuinige gegevenstype dat het gegevensbereik ondersteunt dat u in een bepaalde kolom nodig hebt.