Jep, du legst Indizes auf die Spalten, die oft in WHERE oder ORDER BY vorkommen bzw. auch bei Spalten, die du oft in Sachen wie max(), min() verwendest. Hmm, bei ORDER BY bin ich mir grade unsicher ...
Erklärung:
MySQL verwendet bei Spalten in der WHERE-Klausel (meistens) den Index, um die betreffenden Datensätze auszuwählen und muss deshalb nicht die ganze Tabelle lesen (scannen).
Das ganze kann auch so weit gehen, dass MySQL bei einer Abfrage nur Indizes verwendet und die Tabelle gar nicht anfässt: z.B. bei
Code
Zitat:
die da wäre?
Hatte ich auch nicht im Kopf ...
Tabellen sperrenein Insert, mit dem mehrere Datensätze eingefügt werdenLOAD DATA INFILE
Am besten, du liest das selber im Referenzhandbuch nach: http://dev.mysql.com/doc/refman/5.1/de/index.
html 7.2.16. Geschwindigkeit von INSERT-Anweisungen
Für dich könnte das ganze Kapitel 7 interessant sein ...
Zitat:
Bei einer Tabelle steigt der Rechenaufwand exponetiell zur Größe.
Dazu ist mir noch etwas eingefallen ... exponentielle Probleme sind praktisch nicht berechenbar.
Nehmen wir 2^n an - n ist die Größe der Tabelle.
Zitat:
Aber selbst max() dauert bei 5 Mio Datensätzen bei mir etwa 2,7 Sekunden
also bei n = 5.000.000 entspricht 2,7 Sek
--> n = 5.000.001: 2^5.000.001 = 2 * 2^5.000.000 --> 2 * 2,7 Sek usw.
n = 5.001.000: 2^1000 * 2^5.000.000 --> 2^1000 > 10^301 --> mehr als 2,7 * 10^301 Sekunden ...