Hi,
ich habe in einer MySQL DB eine Tabelle mit ca. 1,4 Mio Datensätzen und prinzipiell folgendem Aufbau:
+-----+-----+-----+
| Sp1 | Sp2 | Sp3 |
+-----+-----+-----+
|aaaaa| foo | bar |
+-----+-----+-----+
|aaaaa| foo | bar |
+-----+-----+-----+
|aaaaa| foo | bar |
+-----+-----+-----+
|bbbbb| foo | bar |
+-----+-----+-----+
|bbbbb| foo | bar |
+-----+-----+-----+
|ccccc| foo | bar |
+-----+-----+-----+
|ccccc| foo | bar |
+-----+-----+-----+
Die Tabelle hat noch ca. zehn Spalten mehr von denen aber noch ein paar wegfallen könnten.
Die Abfrage:
SELECT sp2, sp3 FROM tabelle WHERE Sp1='bbbbb';
dauert auf meinem PC (PIII, 650 Mhz) ca. 7 Sekunden, was entschieden zu lange ist.
Bei o.g. Select-Abfrage wird doch jede Zeile von Sp1 geprüft. Diese Spalte ist aber vorsortiert, so dass doch nach dem ersten Auftauchen eines anderen Wertes (nach min. einem erfolgreichem matching) die Suche abgebrochen werden könnte.
Geht so was oder bin ich etwas ganz auf dem Holzweg?
Noch 'ne Frage:
Im Ergebnis der Select-Abfrage muss ich dann noch mehrmals suchen.
Wie kann ich mir dabei eine erneute, erste (siehe oben) Abfrage ersparen?
Wenn ich das Ergebnis in eine anderen Tabelle schreibe um es zwischenzuspeichern, bekomme ich Probleme, wenn mehrere Prozesse zeitüberschneidend da sgleiche tun.
Viele Grüße
Rol