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:
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.
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.