Die Zugriffspläne von ALLEN von der SQE ausgeführten SQL-Abfragen werden in dem SQE Plan Cache gespeichert. Dabei spielt es keine Rolle, ob die Zugriffs-Pläne von einem statischen SQL-Statement in einem (RPG) Program oder einer SQL Routine (Stored Procedure oder User Defined Function) oder von einem dynamischen SQL generiert wurden.
Jedes SQL-Statement benötigt einen Access Plan der genau beschreibt, welche Schritte für dieses Statement erforderlich sind (Zugriffswege, Reihenfolge, Temporäre Objecte). Dieser Zugriffs-Plan dann ausgeführt (ODP= Open Data Path wird geöffnet).
Wird ein SQL-Statement ausgeführt, wird zunächst in den SQE Plan Cache geschaut, ob es da einen passenden Access Plan gibt. Dieser wird dann nochmal gecheckt (und ggf. ersetzt) bevor er dann ausgeführt wird.
Pro SQL-Statement können bis zu 3 unterschiedlichen Plänen gespeichert werden.

Die Access Pläne für Statisches SQL werden zusätzlich im (Service-)Programm-Objekt gespeichert (und auch aktualisiert). Wenn im Plan Cache kein entsprechender Plan gefunden wird, kann auf die in den Programm-Objekten gesicherten Pläne zurückgegriffen werden. Die in den Objekten (bzw. bei der Erstellung) gesicherten Zugriffs-Pläne können auch separat (SQL Package) gespeichert und verwendet werden. Vor SQE (ab ca. Release V5R2) war das die einzige Möglichkeit Zugriffs-Pläne zu speichern und verwenden.
Heute wird immer zunächst in den Plan Cache geschaut und nur dann wenn dort nicht gefunden, werden die Alternativen genutzt.

Wenn der SQE-Plan Cache vollläuft, werden die ältesten bzw. am längsten nicht verwendeten Access Pläne gelöscht. Ist der SQE Plan Cache zu klein gewählt, kann es natürlich vorkommen, dass auch relativ aktuelle Access Pläne aus dem Plan Cache verschwinden und eben NICHT mehr im ACS angezeigt werden.

Langer Rede kurzer Sinn: Plan Cache ist immer aktuell