Ab der Version Informix 14.10xC11 (aktuell ist 14.10xC12) ist es bei Informix möglich, partielle Indexe im Zusammenhang mit FRAGMENT BY EXPRESSION gezielt zur Speicherreduktion und zur Performanceoptimierung einzusetzen, da lediglich ein Teil der Tabellenzeilen regelmäßig abgefragt wird.
Die Grundidee dahinter: ein Partial Index indexiert nur Zeilen, die eine WHERE-Bedingung erfüllen. In der Folge landet nicht jede Zeile im Index und letzterer ist kleiner, schneller und einfacher in der Pflege. Nur relevante Zeilen werden indexiert und mittels FRAGMENT BY EXPRESSION gezielt über mehrere (bestimmte) dbspaces verteilt. Im Ergebnis führt diese Maßnahme im alltäglichen Betrieb zu weniger I/O und einer besseren Cache-Nutzung, da der Index im Buffer verbleibt.
Typische Einsatzszenarien wären z. B.:
- Die Trennung von historischen und aktiven Daten: Abfragen auf aktive Daten erfolgen in Produktionssystemen in der Regel deutlich häufiger, als umgekehrt, „aktive“ Daten könnten zudem auf schnellem Storage gespeichert werden, sofern z. B. verschiedene Storage-Klassen im Einsatz sind
- Zeitabhängige Abfragen: sinnvoll wäre dies insbesondere bei großen Tabellen sowie bei Monitoring & Reporting – durch die Indexierung ausschließlich aktueller Daten (z. B. Aufträge eines bestimmten Tages) wird die Historie ignoriert, was zu Performancesteigerungen führt
- Status- oder Flag-basierten Abfragen: denkbar ist z. B. ein Überblick über noch offene Aufträge
Zu beachten ist hierbei, dass:
- Die Query zur WHERE-Bedingung passt
- Die WHERE Bedingung „stabil“ ist
- Der Optimizer „passt“ > d. h. regelmäßiges Durchführen von Update Statistics
Im Ergebnis eigenen sich partielle Indexe also hervorragend, um vergleichsweise kleine, aber aktive Datenmengen gezielt zu indexieren und performant zu verteilen und gleichzeitig den Overhead von „inaktiven“ Daten zu vermeiden, da diese aufgrund der gezielten Indexierung „außen vor“ gehalten werden können.
Die Vorteile partieller Indexe:
- Weniger I/O
- Bessere Cache-Nutzung
- Geringerer Lock- & Update-Overhead
- Storage-Optimierung

