mysql index Verständniss Fragen

aargau

Erfahrenes Mitglied
Ich bin gerade dabei mich etwas im Bereich mysql weiterzubilden um meine Webanwendungen zu Optimieren. Nun habe ich ein verständniss Problem.

Ich habe z.B. diese mysql Query:
PHP:
$q= mysql_query("SELECT id, nickname, email, gebdatum, ort, reg FROM benutzer_daten ".
."WHERE nickname='$nick' AND password='$password' ") ;

Ein Primärschlüssel liegt hierbau auf der Spalte id, ein index auf dem Nickname.
Nun meine Frage: Muss ich zwingend auch auf password ein index legen, damit diese Query indizes nutz oder reicht es aus den Index auf den nickname zu lassen?

Meine überlegung ist es: Die Datenbank arbeitet zuerst den Nickname ab und sucht alle Benutzer nit dem Nickname heraus (was genau einer sein kann. Man könnte hier auch ein UNIQUE auf die Spalte legen...) und vergleicht danach von diesem Resultat(e) ob das Passwort zutrifft und gibt dann die geforderten Spalten aus.

Sehe ich das so richtig oder würde es zu einem weiteren vorteil kommen wenn ich nun auch nodh auf password einen Index lege bzw. bei andren WHERE Klauseln mit AND immer auch ein index auf die Spalte zu legen.
 
Ja, es kann immer nur ein Datensatz geben bei dieser ABfrage.
Heisst also: Wenn ich bereits mit dem ersten index auf eine (oder vieleicht auch wenige, unzusortierende) Zeile gehe, bringt es mir relativ wenig wenn ich nun extra auch auf das Passwort einen index lege.
Ich habe nun noch eine andere Idee (das ganze war aber für mich eh mehr eine Verständnissfrage). Das Passwort gar nicht mit mysql testen sondern direkt mit php. Denn die ID vom User brauche ich so oder so (Loginlog).
Dir auf jedenfall vielen Dank für die Antwort.
 
Wenn du UNIQUE auf den Benutzernamen legst, sparst du dir sogar einen SELECT bei einer Neu-Registrierung. Nur so als Anmerkung, ansonsten finde ich den Beitrag hier sehr sinnvoll für weitere Leser.
 
Zurück