Die Diskussion finde ich recht lustig, denn den Ausgangspunkt habe ich offensichtlich selbst geliefert.
Meine Liste entstand aus der Notwendigkeit, einem Shop mit ca. 8.000 Artikeln mehr Speed zu geben. Dazu habe ich zunächst von MySQL ein Log-File schreiben lassen, das mir alle Querys protokollierte, die mehr als 2 Sekunden in Anspruch nahmen. Diese Querys habe ich mir dann wieder von MySQL per "explain" erklären lassen. Explain zeigt, welchen Weg der Optimizer nimmt, welche Indizes er benutzt und wo Full-Table-Scans notwendig sind.
Wo Full-Table-Scans nötig waren, habe ich dann versucht, mit Indizes Abhilfe zu schaffen und die Zahl der gelesenen Datensätze verglichen.
Die Liste ist sicher nicht vollständig, weil sie aus genau einem Anwendungsfall resultiert. Dort brachte sie allerdings (in Zusammenhang mit einer Optimierung der MySQL-Parameter) einen Performancegewinn von rund 60%.
Natürlich schlucken Indizes auch Ressourcen, aber ein wenig Platz auf der Platte habe ich immer, und der Aufbau von Indizes beim Laden der Tabellen bzw. beim Anlegen von Artikeln etc. fällt gegen die Mehrleistung bei den Abfragen nicht ins Gewicht.
Damit ist der grundsätzliche Nutzen der o.a. Liste hoffentlich abschließend geklärt.
Sinnvoll ist es natürlich, derartige Experimente auch auf dem eigenen System durchzuführen. Immerhin ändert sich der Datenbankaufbau mit der Programmpflege und eventuellen Zusatzmodulen. Zudem können andere Anwendungsfälle natürlich auch zum vermehrten Auftreten langsamer Querys führen, die in meinem Fall gar nicht auftraten.
Noch eine Frage zum Schluß: Irgendwer hat die kombinierten Indizes verworfen und statt dessen zwei einzelne Indizes vorgeschlagen. Darf ich den Grund erfahren?