mmofacts.com

MySQL & Indexing

gepostet vor 19 Jahre, 7 Monate von MannaZ
Die Vorteile von Indexing sind ja bekannt, nur wollte ich nun wissen, ob es sich auszahlt die Indexes größenmäßig zu beschränken?
gepostet vor 19 Jahre, 7 Monate von knalli
Inwiefern.. ich mag nicht behaupten, dass ich Mysqlprofi bin, aber eventuell reichts.

Details bitte
gepostet vor 19 Jahre, 7 Monate von MannaZ
Also, soweit ich das verstanden habe (bin meinerseits auch kein MySQL experte), indizieren* Indexes (wie der Name ja sagt) häufige Datebankabfragen.
Nun kann es ja sein, das ein kleinerer - aber feiner - Index mehr leistung / geschwindigkeit bringt als ein großer mit einem haufen Datenmüll.

Meine Frage:
Ist die Größe des Indizes belanglos, oder hat es Performancevorteile diesen Größenmäßig zu begrenzen.


* so eine Art zwischenspeichern / hervorheben ?!?
gepostet vor 19 Jahre, 7 Monate von Kampfhoernchen
Meiner Erfahrung nach kommt das immer auf die Datenstruktur an. Bei Integer-Indexies ist eine Beschränkung sinnvoll, bei Varchar weniger, da dort insbesondere bei Suche mit Wildcards sehr viel Rechenleistung eingespart wird.

Außerdem kommt es darauf an, wie schnell man auf die Datenbank zugreifen kann, also auf die Gewschwindigkeit der Platte. Schnelle Platte -> weniger Indexe, langsame Platte (meist dann auch größer und billiger) -> mehr Indexe.

Aber probiers lieber selbst aus.
gepostet vor 19 Jahre, 6 Monate von Tweety
Also, soweit ich das verstanden habe (bin meinerseits auch kein MySQL experte), indizieren* Indexes (wie der Name ja sagt) häufige Datebankabfragen.

Ist das so? Ich dachte eher, die Indizes legen Listen aller auftauchenden Werte dieses Feldes an, in der man schnell sehen kann, welche Datensätze diese Werte enthalten... Also für ein Integer-Feld z. B. eine Liste aller Datensätze mit dem Wert "0", dem Wert "1", "2" etc...
gepostet vor 19 Jahre, 6 Monate von Kampfhoernchen
Ich glaube (ohne es wirklich zu wissen), sind es eben keine Listen, sondern Suchbäume oder etwas in der Art, dass die Geschwindigkeit einer Suche verringert - natürlich zu Lasten des Speicherplatzes.
gepostet vor 19 Jahre, 6 Monate von zodiac2k
Indizes werden normalerweise in Bäumen verwaltet, und afaik auch bei Mysql. Bei Suchen (also Selects) bringen Indizes enorme Geschwindigkeitsvorteile solang die ersten 2-3 Such- und Sortierkriterien einer Abfrage indiziert sind und dadurch die Ergebnismenge gut differenziert abdecken.

Bei Indizes ist aber zu beachten, dass man bei einem sich stark verändernden Datenbestand in einer Tabelle durch zu viele und zu umfangreiche Indizes Geschwindigkeitseinbussen bekommt, da Jedes Insert, Delete oder Update alle betroffenen Elemente der Indexbäume aktualisieren muss.

Es gehört etwas Erfahrung und Beobachtung dazu, die Menge und Art von Indizes auf einer Tabelle sinnvoll zu setzen. Es muss beobachtet werden, wie stark Selects gegenüber Inserts, Deletes und Updates verwendet werden und dann die Zeiten der Abfragen auf ihre Dauer zu analysieren und zu vergleichen.

Desweiteren liegt es auch manchmal an Tabellentypen, da je nach gesetzten Feldattributen wie z.Bsp. "Unique" andere Techniken zur Index-Baum-Erzeugung verwendet werden.

Auf diese Diskussion antworten