Sitze gerade in meinem Praktikum an einer Anwendung mit einer ziemlich großen Tabelle (mehrere Millionen Zeilen) und sollte die Performance von ein paar Abfragen verbessern. Klassischer Fall, dachte ich mir: Index auf die Spalten setzen, die oft in WHERE-Klauseln auftauchen, fertig. Hat auch super funktioniert, die SELECT-Abfragen waren danach spürbar schneller.
Jetzt habe ich aber gemerkt, dass die INSERT- und UPDATE-Vorgänge auf genau dieser Tabelle merklich langsamer geworden sind, seit ich mehrere Indizes gesetzt habe. Macht ja irgendwie auch Sinn, weil die Indizes bei jeder Schreiboperation mitgepflegt werden müssen, aber so richtig ein Gefühl dafür, wo die Grenze liegt, habe ich noch nicht.
Konkrete Fragen an euch:
- Gibt es eine Faustregel, wie viele Indizes pro Tabelle noch okay sind, bevor es sich negativ bemerkbar macht?
- Wie geht ihr vor, um vorher abzuschätzen, ob sich ein Index überhaupt lohnt (Verhältnis Lesezugriffe zu Schreibzugriffe)?
- Gibt es Tools oder Vorgehensweisen, mit denen man das systematisch analysiert, statt einfach auszuprobieren?
Bin für jeden Praxistipp dankbar, gerade weil das in der Theorie im Studium immer recht oberflächlich behandelt wurde.