2012-05-30 8 views
6

Abend,30 Millionen Zeilen in MySQL

ich durch den langen Prozess des Gehen Daten aus einem angeschlagenen, 15-jährigen, schreibgeschützte Datenformat in MySQL importiert einige kleineren statistische Tabellen davon zu bauen .

Die größte Tabelle, die ich zuvor erstellt habe, war (glaube ich) 32 Millionen Zeilen, aber ich hatte nicht erwartet, dass sie so groß wird und MySQL wirklich überfordert.

Die Tabelle wird wie folgt aussehen:

surname name year rel bco bplace rco rplace 
Jones  David 1812 head Lond Soho  Shop Shewsbury 

So, kleine Ints und Varchars.

Kann jemand Ratschläge geben, wie man dies so schnell wie möglich zum Arbeiten bringt? Würden Indexe auf irgendeinem der Coulms helfen oder würden sie nur Abfragen verlangsamen.

Viele der Daten in jeder Spalte werden mehrfach dupliziert. Einige Felder haben nicht viel mehr als etwa 100 verschiedene mögliche Werte.

Die Hauptspalten, nach denen ich die Tabelle abfragen werde, sind: Nachname, Name, rco, rplace.

+2

Indizes beschleunigen den Datenabruf und verlangsamen die Dateneinfügung. Im Allgemeinen sind sie eine sehr gute Sache: Ich würde vorschlagen, sie für jede der Spalten zu erstellen, in denen Sie wahrscheinlich die Tabelle abfragen. – eggyal

+3

30 Millionen Zeilen sind nicht sehr viele für ein modernes RDBMS. Es sei denn, Sie machen natürlich vollständige Tabellen-Scans ohne Indizes. –

+0

Danke für deinen Kommentar. Ich denke, das war eines der Probleme mit meinen 32 Mil. Reihentabelle Das Einfügen von Zeilen verursachte Abstürze. –

Antwort

5

INDEX auf einer Spalte befestigt die Suche. Versuchen Sie INDEX Spalten, die Sie häufiger in Abfragen verwenden würden. Wie Sie erwähnt haben, würden Sie die Spalten surname, name, rco, rplace verwenden. Ich würde vorschlagen, dass Sie sie indexieren.

Da die Tabelle 32 Millionen Datensätze hat, würde die Indexierung irgendwann dauern, aber es ist die Wartezeit wert.

+0

Danke. Ich baue jetzt nur den Tisch. So kann ich die Indizes auf Einfügen anstelle von auf der c erstellen. 30 Mil Reihen. –

+1

@KohjahBreese: Überprüfen Sie beide Möglichkeiten. Sie können feststellen, dass das Erstellen des Indexes * einmal * auf 30 Millionen Zeilen schneller ist als das schrittweise Erstellen des Indexes. –

Verwandte Themen