Frage,
mal angenommen ich hab eine Profil Tabelle in der folgenden Daten eines Users gespeichert sind:
- Name
- Vorname
- Email
- Ort
- Strasse
- PLZ
- Homepage
- ...
Die Liste könnte noch weiter gehen. Eine Suche über alle Felder soll möglich sein! Natürlich wäre es jetzt quatsch auf alle Felder mit einem OR Operator zu suchen zumal MySQL nur eine Index pro Query benutzt und ja mehr oder weniger selber entscheidet welchen er nimmt.
Voraussetzung: Die Daten existieren in den verschiedensten Sprachen und in den Tabellen wird UTF-8 benutzt.
Was ist jetzt die performantere Lösung angesichts steigender Profil Datensätze:
- Eine neue Spalte in der gleichen Tabelle in der alle Daten leerzeichen getrennt dupliziert werden und darauf ein Volltext Index zu legen. Da gibt glaub ich Probleme mit nicht gleichen Zeichensätzen!?
oder
- Eine 2 Tabelle nur zum Suchen in der es 2 Spalten gibt, die ID zum Datensatz in der eigentlichen Profil Tabelle als Referenz und 1 Spalte wo für einen Datensatz aus der Profil Tabelle jeder Wert eingefügt wird. Darauf einen Index und fertig. Ach ja, die Abfrage sehen dann aber auch anders aus von Wegen JOIN, evtl. Subselect. Ist ja auch ein Performance Kriterium!
Vollindex oder Suchtabelle? dat is hier die Frage
(ähm evtl. ist das hier auch besser im Brainstorming aufgehoben?!)
f*
mal angenommen ich hab eine Profil Tabelle in der folgenden Daten eines Users gespeichert sind:
- Name
- Vorname
- Ort
- Strasse
- PLZ
- Homepage
- ...
Die Liste könnte noch weiter gehen. Eine Suche über alle Felder soll möglich sein! Natürlich wäre es jetzt quatsch auf alle Felder mit einem OR Operator zu suchen zumal MySQL nur eine Index pro Query benutzt und ja mehr oder weniger selber entscheidet welchen er nimmt.
Voraussetzung: Die Daten existieren in den verschiedensten Sprachen und in den Tabellen wird UTF-8 benutzt.
Was ist jetzt die performantere Lösung angesichts steigender Profil Datensätze:
- Eine neue Spalte in der gleichen Tabelle in der alle Daten leerzeichen getrennt dupliziert werden und darauf ein Volltext Index zu legen. Da gibt glaub ich Probleme mit nicht gleichen Zeichensätzen!?
oder
- Eine 2 Tabelle nur zum Suchen in der es 2 Spalten gibt, die ID zum Datensatz in der eigentlichen Profil Tabelle als Referenz und 1 Spalte wo für einen Datensatz aus der Profil Tabelle jeder Wert eingefügt wird. Darauf einen Index und fertig. Ach ja, die Abfrage sehen dann aber auch anders aus von Wegen JOIN, evtl. Subselect. Ist ja auch ein Performance Kriterium!
Vollindex oder Suchtabelle? dat is hier die Frage
(ähm evtl. ist das hier auch besser im Brainstorming aufgehoben?!)
f*
Kommentar