Einige Antworten:
-
20 Millionen Zeilen liegen innerhalb der Möglichkeiten von MySQL. Ich arbeite an einer Datenbank, die über 500 Millionen Zeilen in einer ihrer Tabellen enthält. Es kann Stunden dauern, eine Tabelle neu zu strukturieren, aber gewöhnliche Abfragen sind kein Problem, solange sie von einem Index unterstützt werden.
-
Ihr Laptop ist ziemlich veraltet und zu schwach, um als hochskalierter Datenbankserver verwendet zu werden. Es wird lange dauern, eine Tabellenrestrukturierung durchzuführen. Die geringe Speichermenge und die typischerweise langsame Laptop-Festplatte schränken Sie wahrscheinlich ein. Sie verwenden wahrscheinlich auch Standardeinstellungen für MySQL, die für sehr alte Computer entwickelt wurden.
-
Ich würde die Verwendung von
TEXT
nicht empfehlen Datentyp für alle Säule. Es gibt keinen Grund, warum SieTEXT
brauchen für die meisten dieser Spalten. -
Erstellen Sie nicht für jede Spalte einen Index, insbesondere wenn Sie darauf bestehen,
TEXT
zu verwenden Datentypen. Sie können nicht einmal einenTEXT
indizieren -Spalte, es sei denn, Sie definieren einen Präfixindex . Wählen Sie im Allgemeinen Indizes aus, um bestimmte Abfragen zu unterstützen.
Sie haben wahrscheinlich viele andere Fragen, die auf den oben genannten basieren, aber es gibt zu viel, um in einem einzigen StackOverflow-Beitrag behandelt zu werden. Vielleicht möchten Sie eine Schulung absolvieren oder ein Buch lesen, wenn Sie mit Datenbanken arbeiten.
Ich empfehle Hochleistungs-MySQL, 2. Ausgabe
.
Zu Ihren Folgefragen:
Für MySQL-Tuning ist hier ein guter Ausgangspunkt:http://www.mysqlperformanceblog.com/2006/09/29/what-to-tune-in-mysql-server-after-installation/
Viele ALTER TABLE-Operationen verursachen eine Tabellenumstrukturierung, was bedeutet, dass die Tabelle grundsätzlich gesperrt, eine Kopie der gesamten Tabelle mit den angewendeten Änderungen erstellt und dann die neuen und alten Tabellen umbenannt und die alte Tabelle gelöscht werden. Wenn die Tabelle sehr groß ist, kann dies lange dauern.
Ein TEXT-Datentyp kann bis zu 64 KB speichern, was für eine Telefonnummer oder einen Staat zu viel des Guten ist. Ich würde CHAR(10) für eine typische US-Telefonnummer verwenden. Ich würde CHAR(2) für einen US-Bundesstaat verwenden. Verwenden Sie im Allgemeinen den kompaktesten und sparsamsten Datentyp, der den Datenbereich unterstützt, den Sie in einer bestimmten Spalte benötigen.