Durchsuchen der DB optimieren

Hi ich habe eine kleine Suche geschrieben. Eigentlich ist nur eine einfache SELECT abfrage:
PHP:
  $sql = "SELECT
           *
	FROM
           dlo_user_list
        Where Vorname LIKE '%$suchbegriff%'
        OR
        Nachname LIKE '%$suchbegriff%'
        OR
        Abteilung Like '%$suchbegriff%'
        OR
        Dezernat LIKE '%$suchbegriff%'
        OR
        Abteilungsfunktion LIKE '%$suchbegriff%'
        OR
        Dienstapparatnummer LIKE '%$suchbegriff%'
        OR
        Dienstgrad LIKE '%$suchbegriff%'
        ";
Funktioniert soweit auch ganz gut. Leider ist sie zu ungenau.
Heißt wenn ich ein 'e' eingebe kommen alle User, die eine 'e' in irgendeinem der Felder besitzen.
Gibt es eine Variante wie man die Suche verbessern kann, sie also genauer machen kann?


Mfg Martin
 
Vielleicht solltest du nach allen Kriterien einzeln suchen lassen. Oder du gibst deinen Usern die Chance nach was Sie alles suchen können.

Dann kannst du das doch ein bissl einschränken.....
 
Du kannst deine Suchmaschine aber natürlich auch nciht SQL Basierend machen, sondern Dateibasieren, dann durchsucht er alle Dateien die du angibst....
 
Das einzige was wirklich sinnvoll ist, ist die Suchmaske mit allen Feldern als Eingabemöglichkeit zu gestalten. Vorallem für bestimmte Felder wird es vermutlich möglich sein mit Auswahlfenstern zu arbeiten. (z.B. Dezernat, Dienstgrad etc.). Wenn du das dann ganz komfortabel machen willst, machst du die Auswahlfenster so, dass auch mehrere Einträge markiert werden können.

Oder du gestaltest die Maske so, dass du ein Eingabefeld hast und 7 Checkboxes. Da kann dann der User auswählen worin er suchen will. In deinem PHP Code generierst du anhand der gewählten Boxes dein SQL Statement.

Allgemein solltest du auch beachten, dass die Like Suche sehr performancelastig ist.

Zudem sollte man sich bei einer Abfragemaske immer überlegen, nach was wirklich gesucht werden wird. D.h. sich in den Anwender versetzen und überlegen, was der Anwender haben möchte, oder noch besser den Anwender fragen. Da ist z.B. die Frage, ob ein Anwender die Telefonnummer mit einem Like sucht, oder ob er die nicht komplett sucht. Also ob er nur eine 2 eingibt, oder gleich die Durchwahl 2450. Die Sache mit den Auswahlfeldern geht in die gleiche Richtung. Warum Abteilungsleiter nicht als Auswahlfeld sondern als Eingabe "Abteilungsleiter"?
 
Momentan ist es so, dass wenn ich 'e' eingebe ich alle Datensätze erhalt wo eine 'e' drinnen vor kommt. wie kann ich das umgehen?

EDIT: Hat sich erledigt, habe die % vor und nach dem Suchbegriff entfernt.
 
Original geschrieben von FlyingMeridian
Momentan ist es so, dass wenn ich 'e' eingebe ich alle Datensätze erhalt wo eine 'e' drinnen vor kommt. wie kann ich das umgehen?

EDIT: Hat sich erledigt, habe die % vor und nach dem Suchbegriff entfernt.

Das sagtest du schon im ersten Thread und bfsdasauge hat dir darauf jetzt eine ziemlich ausführliche Antwort gegeben
 
Zurück