Anzahl der Indexe pro Tabelle (MySQL)
Honda
- datenbank
Hallo,
Ich habe eine Tabelle in einer MySQL-Datenbank mit 40 Spalten (die Spalten sind - abgesehen von der ID - durchwegs Varchar 55, 5 Spalten davon Varchar 250).
In ca. 20 Spalten (davon die 5 Varchar 250er) soll eine Volltextsuche möglich sein.
Hat jemand von Euch Erfahrungswerte, wieviele Indizes in einer Tabelle dieser Größenordnung sinnvollerweise angelegt werden sollten?
Da die Daten in der Tanbelle alle für die Suche verwendet werden sollen, müsste eigentlich jede Spalte indexiert werden und auch einige oft verwendete Kombinationen. Kann dies Probleme bereiten? Gibt es hier Grenzen die zu beachten sind?
Merci,
Honda
yo,
Kann dies Probleme bereiten? Gibt es hier Grenzen die zu beachten sind?
ja, sehr wahrscheinlich sogar. nicht immer können vorhandene indizes auch benutzt werden und in aller regel ist das auch nur einer, der benutzt wird. es kommt ganz darauf an, wie die daten abgefragt werden. eventuell solltest du über dein tabellen-layout noch einmal nachdenken und spalten auflösen, die sich zusammenfassen lassen.
Ilja
Hallo Ilja,
danke für Deine Antwort.
Die Spalten lassen sich nicht zusammenfassen.
Ich könnte höchstens einige aus der Tabelle rausnehmen und in eine neue Tabelle packen.
Das Suchformular enthält Abfragemöglichkeiten zu allen Spalten.
D.h. es würden einige Abfragen dann über zwei Tabellen gehen.
Ist das Vorteilhafter, im Bezug auf die Indexierung?
Grüsse,
Honda
yo,
Ist das Vorteilhafter, im Bezug auf die Indexierung?
tuning ist ein orakel für sich. dabei gibt es nur einen einzigen festen grundsatz, probieren geht über studieren. oftmals kommen nämlich ganz andere dinge heraus, als in der theorie geplant war.
ein zusätzliches problem ist, dass es nicht nur um die performance bei datenbanken geht, sondern auch andere faktoren wie wartbarkeit eine rolle spielen. mein tipp, probier deine ideen einfach aus und kontrolliere sie in der praxis. was tuning betrifft spielen faktoren eine rolle, selbst auf den dateninhalt kommt es dabei drauf an.
Ilja