Rol: MySQL: Performaceproblem

Beitrag lesen

Hi Michael,

Wie viele _verschiedene_ Werte enthält die Spalte "sp1"?

ich schätze 10000 - 20000

(Wie viele Treffer bekommst Du im Schnitt?)

10-1000

Wenn das wenige sind (1-3stellig), dann fehlt einfach nur der Index.
(Mit dem wird es dann um 3-5 Zehnerpotenzen schneller.)

Das wäre super!

Diese Spalte ist aber vorsortiert,

Das bezweifele ich.
Du hast keinen Einfluß auf die interne Anordnung der Datensätze.

Die Daten bekomme ich in einer Textdatei, dort sind sie nach dieser Spatle sortiert. Ich lese sie dann in dieser reihenfolge in die DB ein.

Wenn Deine Treffer in der Tat unique sein sollten,

Ich verstehe nicht ganz was du mit unique _hier_ meinst.
Vieleicht zur Erklärung:
In Sp1 stehen Postleitzahlen, in Sp3 Straßennamen und in Sp2 einen Art Staußen-PLZ-ID (die ich brauche) .
Suchen wir z.B. nach der "Dr.-Max-Plack-Straße" in 98765 Musterstadt.
Wenn ich Glück habe, finde ich _ein_ ergebnis bei:
SELECT Sp2 FROM tabele WHERE Sp1='98765' AND Sp3='Dr.-Max-Plank-Straße'

Es gibt aber oft Schreibfehler bei den Straußen.
Also suche ich, wenn ich kein Ergebnis bekomme nach den einzelen Straßennamen-Teilen:
[1]SELECT Sp2 FROM tabele WHERE Sp1='98765' AND Sp3 LIKE'%Dr'
[2]SELECT Sp2 FROM tabele WHERE Sp1='98765' AND Sp3 LIKE'%Max'
[3]SELECT Sp2 FROM tabele WHERE Sp1='98765' AND Sp3 LIKE'%Plank'

bei [1] bekomme ich mehere Ergebnisse -> weiter versuchen
bei [2] wenn ich Glück habe und es in dieser PLZ nur eine MAX-Straße gibt _ein_Ergebnis
bei [3] kein ergebnis, weil es richtig "Planck" heisen muß und dies die Ursanche für das nichtfinden beim ersten Versuch war ;-).

dann wäre ein Primärschlüssel über Spalte Sp1 zu empfehlen.

Wie gesagt, das mit dem Schlüssel ist mir irgendwie schleierhaft, wie macht man das ?

Grüße

Rol