Überprüfen, ob die Optimierungsrichtlinien verwendet wurden

Das Optimierungsprogramm unternimmt jeden Versuch, die in einem Optimierungsprofil angegebenen Optimierungsrichtlinien einzuhalten. Das Optimierungsprogramm kann jedoch ungültige oder nicht anwendbare Richtlinien zurückweisen.

Vorbereitende Schritte

Bevor die EXPLAIN-Funktion verwendet werden kann, müssen EXPLAIN-Tabellen vorhanden sein. Die DDL-Anweisungen (DDL = Data Definition Language, Datendefinitionssprache) zur Erstellung der EXPLAIN-Tabellen sind in der Datei EXPLAIN.DDL enthalten, die sich im Unterverzeichnis misc des Verzeichnisses sqllib befindet.

Prozedur

Führen Sie die folgenden Schritte aus, um zu prüfen, ob eine gültige Optimierungsrichtlinie verwendet wurde:

  1. Geben Sie die EXPLAIN-Anweisung für die Anweisung ein, für die die Richtlinien gelten.
    Wenn eine Optimierungsrichtlinie für die Anweisung durch ein Optimierungsprofil wirksam war, wird der Name des Optimierungsprofils als Argument des Operators RETURN in der Tabelle EXPLAIN_ARGUMENT ausgewiesen. Und wenn die Optimierungsrichtlinie eine eingebettete SQL-Optimierungsrichtlinie bzw. ein Anweisungsprofil enthielt, die der aktuellen Anweisung entsprach, wird der Name des Anweisungsprofils als Argument eines Operators RETURN ausgegeben. Die Typen dieser beiden neuen Argumentwerte sind OPT_PROF und STMTPROF.
  2. Untersuchen Sie die Ergebnisse der mit EXPLAIN bearbeiteten Anweisung.
    Die folgende Abfrage auf die EXPLAIN-Tabellen kann modifiziert werden, um den Namen des Optimierungsprofils und den Namen des Anweisungsprofils für Ihre bestimmte Kombination aus EXPLAIN_REQUESTER, EXPLAIN_TIME, SOURCE_NAME, SOURCE_VERSION und QUERYNO zurückzugeben:
       SELECT VARCHAR(B.ARGUMENT_TYPE,   9) as TYPE, 
            VARCHAR(B.ARGUMENT_VALUE, 24) as VALUE 
     
       FROM   EXPLAIN_STATEMENT A, EXPLAIN_ARGUMENT B 
     
       WHERE  A.EXPLAIN_REQUESTER = 'SIMMEN' 
         AND  A.EXPLAIN_TIME      = '2003-09-08-16.01.04.108161' 
         AND  A.SOURCE_NAME       = 'SQLC2E03' 
         AND  A.SOURCE_VERSION    = '' 
         AND  A.QUERYNO           = 1 
     
         AND  A.EXPLAIN_REQUESTER = B.EXPLAIN_REQUESTER 
         AND  A.EXPLAIN_TIME      = B.EXPLAIN_TIME 
         AND  A.SOURCE_NAME       = B.SOURCE_NAME 
         AND  A.SOURCE_SCHEMA     = B.SOURCE_SCHEMA 
         AND  A.SOURCE_VERSION    = B.SOURCE_VERSION 
         AND  A.EXPLAIN_LEVEL     = B.EXPLAIN_LEVEL 
         AND  A.STMTNO            = B.STMTNO 
         AND  A.SECTNO            = B.SECTNO 
     
         AND  A.EXPLAIN_LEVEL     = 'P' 
     
         AND  (B.ARGUMENT_TYPE  = 'OPT_PROF' OR ARGUMENT_TYPE = 'STMTPROF') 
         AND  B.OPERATOR_ID = 1
    Wenn die Optimierungsrichtlinie aktiv ist und die mit EXPLAIN-bearbeitete Anweisung der Anweisung entspricht, die im Element STMTKEY (Anweisungsschlüssel) der Optimierungsrichtlinie enthalten ist, liefert eine Abfrage ähnlich dem vorhergehenden Beispiel eine Ausgabe ähnlich der nachfolgend dargestellten Ausgabe. Der Wert des STMTPROF-Arguments ist derselbe wie der des ID-Attributs im Element STMTPROFILE.
       TYPE      VALUE
       --------- --------------------------
       OPT_PROF  NEWTON.PROFILE1 
       STMTPROF  Guidelines for SAMP Q9