Mysql: Index, Datentyp für Wortsuche
DBler
- datenbank
Hallo,
folgendes "Problem": ich habe vor eine DB anzulegen mit einer Menge an Wörtern, für die bestimmte Daten hinterlegt sind. Die Abfrage der Daten erfolgt in einem einfachen Query a la " where varWort='Bla'". Wenn ich mich nicht irre, benötigen solche Queries viel Rechenaufwand, v.a. verglichen mit Integerwerten.
Doch auch wenn sehr viele Queries in kurzen Zeiträumen vorgesehen sind, habe ich keine Möglichkeit, stattdessen Zahlen zu verwenden da es nunmal eine Suchanfrage nach Wörtern ist.
Ist es gar nicht so "schlimm", wie ich denke bzw. war der Aufwand nur bei LIKE ... Anfragen so groß oder habt Ihr einen guten Alternativevorschlag.
Nächste Sache ist der Index. Würde nun für den VARCHAR einen Index festlegen wollen. Macht das Sinn bzw. Performance-Gewinn?
Danke für Hinweise und Vorschläge
yo,
folgendes "Problem": ich habe vor eine DB anzulegen mit einer Menge an Wörtern, für die bestimmte Daten hinterlegt sind.
dann ist grundsätzlich zu klären, in welcher Beziehung diese Daten mit den hinterlegten Daten stehen, um ein geeigntes datendesign zu entwerfen. dies hat enfleuss auf die performance
Die Abfrage der Daten erfolgt in einem einfachen Query a la " where varWort='Bla'". Wenn ich mich nicht irre, benötigen solche Queries viel Rechenaufwand, v.a. verglichen mit Integerwerten.
nah, das ist schon ganz gut so, keine angst vor buchstaben ;-)
Ist es gar nicht so "schlimm", wie ich denke bzw. war der Aufwand nur bei LIKE ... Anfragen so groß oder habt Ihr einen guten Alternativevorschlag.
Like hat einen schlechteren ruf, als es verdient. und wenn du sowieso auf gleichheit prüfst, dann sollte die performance in den griff zu bekommen sein.
Nächste Sache ist der Index. Würde nun für den VARCHAR einen Index festlegen wollen. Macht das Sinn bzw. Performance-Gewinn?
tuning ist grundsätzlich eine individuelle sache. insofern muss man alle fakten kennen. aber auf den ersten blick macht ein index auf diese spalte sinn, eventuell aber auch ein zusammengestzter index aus mehreren spalten. aber wie gesagt, das hängt von vielen faktoren ab, von den abfragen, von der kardinalität, der ergebnismenge, etc.
Ilja
Hi.
tuning ist grundsätzlich eine individuelle sache. insofern muss man alle fakten kennen. aber auf den ersten blick macht ein index auf diese spalte sinn, eventuell aber auch ein zusammengestzter index aus mehreren spalten. aber wie gesagt, das hängt von vielen faktoren ab, von den abfragen, von der kardinalität, der ergebnismenge, etc.
also es werden nur where ...=... prüfungen sein und zudem bezieht es sich nur auf das eine feld. ansonsten steht die jeweilige info zeile nie in zusammenhang mit einer anderen tabelle o.ä..
werde nun einfach mal einen index drauf setzen und zu testzwecken mal eine mio einträge erzeugen lassen, sodass ich die performance prüfen kann.
danke für infos.
yo,
werde nun einfach mal einen index drauf setzen und zu testzwecken mal eine mio einträge erzeugen lassen, sodass ich die performance prüfen kann.
wichtig dabei ist, dass du testdaten nimmst, wo nicht immer die gleichen werte in der entsprechenden spalte mit dem index drinne stehen, sondern es eine der "praxis" nahe verteilung gibt.
Ilja