Halloo
In meiner Community benötigen die User nur den Benutzernamen für den Aufruf Ihres Profils, also über http://thats-me.ch/Jo gelangt man auf das Profil des Users "Jo".
Da dies nicht von Anfang an so war, geschehen alle Vernüpfungen mit anderen Tabellen über die ID des Users.
Das heisst, wenn ich alle Fotos des Users "Jo" auslesen will, muss ich zuerst die ID auslesen und kann dann die Abfrage machen (oder die Membertabelle in die Abfrage einbinden, was dann wieder die Performance beeinträchtigt).
Meine Frage ist nun, ob es performancemässig gut ist, einen Index auf den Benutzernamen zu setzen. Ich würde dann z.B. bei der Fototabelle den ganzen Nicknamen speichern statt die ID, da ich die ID ja eh nie brauche bei der Ausgabe.
Momentan sieht die Fototabelle etwa so aus:
ID | Dateiname | Member-ID | Uploaddatum | ... etc.
und ausgelesen wird über "SELECT ... FROM fotos, members WHERE fotos.member-id = members.member-id AND member-nick = 'Jo'" (also einfach mit einem inner join ^^)
neu würde es so aussehen:
ID | Dateiname | Nickname | Uploaddatum | ... etc.
und auslesen: "SELECT ... FROM fotos WHERE Nickname LIKE 'Jo'"
Wäre doch einfacher..? aber eben.. wie stehts mit Strings als Index? Performancemässig?
Ja ich hoffe ihr versteht was ich meine
Der Nickname ist max. 15 Zeichen und das Feld in der DB ist vom Typ "Char".
Evtl würde auch ein Index über 10 Zeichen reichen..?
Danke schonmals