Kategorien:

Systemfunktionen

SYSTEM$EXPLAIN_JSON_TO_TEXT

Diese Funktion konvertiert die EXPLAIN-Ausgabe im JSON-Format in formatierten Text.

Siehe auch:

SYSTEM$EXPLAIN_PLAN_JSON , EXPLAIN_JSON

Syntax

SYSTEM$EXPLAIN_JSON_TO_TEXT( <explain_output_in_json_format> )

Argumente

Erläuterung_zu_Ausgabe_in_JSON-Format

Eine Zeichenfolge oder ein Ausdruck, der eine Zeichenfolge ergibt, die die EXPLAIN-Ausgabe als JSON-kompatible Zeichenfolge enthält. Wenn die Eingabe eine Zeichenfolge ist, sollte diese Zeichenfolge in einfache Anführungszeichen ' eingeschlossen werden.

Rückgabewerte

Die Funktion gibt einen VARCHAR-Wert zurück, der die EXPLAIN-Ausgabe als Text enthält, der so formatiert wurde, dass er für Menschen relativ leicht zu lesen ist.

Nutzungshinweise

  • Diese Funktion konvertiert EXPLAIN-Daten im JSON-Format in formatierten Text. Häufig wird der JSON-Wert direkt oder indirekt mit der Funktion SYSTEM$EXPLAIN_PLAN_JSON erzeugt. Beispielsweise könnte die Ausgabe von SYSTEM$EXPLAIN_PLAN_JSON in einer Tabelle gespeichert und später mit dieser SYSTEM$EXPLAIN_JSON_TO_TEXT-Funktion angezeigt werden.

  • Wenn als Eingabe ein Zeichenfolgenliteral übergeben wird, kann das zum Umschließen der Zeichenfolge verwendete Trennzeichen entweder ein einfaches Anführungszeichen ' oder ein doppeltes Dollarzeichen $$ sein. Wenn das Zeichenfolgenliteral einfache Anführungszeichen (und keine doppelten Dollarzeichen) enthält, müssen Sie die in der Zeichenfolge enthaltenen einfachen Anführungszeichen nicht durch Trennen der Zeichenfolge mit doppelten Dollarzeichen umgehen.

Beispiele

In den nachfolgenden Beispielen werden folgende Tabellen verwendet:

CREATE TABLE Z1 (ID INTEGER);
CREATE TABLE Z2 (ID INTEGER);
CREATE TABLE Z3 (ID INTEGER);

Wenn Sie die EXPLAIN-Ausgabe im JSON-Format speichern, aber als formatierten Text anzeigen möchten, können Sie SYSTEM$EXPLAIN_JSON_TO_TEXT() wie folgt aufrufen:

Rufen Sie zuerst die EXPLAIN-Ausgabe im JSON-Format ab, und speichern Sie sie in einer Tabelle:

SET QUERY_10 = 'SELECT Z1.ID, Z2.ID FROM Z1, Z2 WHERE Z2.ID = Z1.ID';
CREATE TABLE json_explain_output_for_analysis (
    ID INTEGER,
    query VARCHAR,
    explain_plan VARCHAR
    );
INSERT INTO json_explain_output_for_analysis (ID, query, explain_plan) 
    SELECT 
        1,
        $QUERY_10 AS query,
        SYSTEM$EXPLAIN_PLAN_JSON($QUERY_10) AS explain_plan;

JSON sieht wie folgt aus:

SELECT query, explain_plan FROM json_explain_output_for_analysis;
+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+
| QUERY                                               | EXPLAIN_PLAN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                          |
|-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| SELECT Z1.ID, Z2.ID FROM Z1, Z2 WHERE Z2.ID = Z1.ID | {"GlobalStats":{"partitionsTotal":2,"partitionsAssigned":2,"bytesAssigned":1024},"Operations":[[{"id":0,"operation":"Result","expressions":["Z1.ID","Z2.ID"]},{"id":1,"parent":0,"operation":"InnerJoin","expressions":["joinKey: (Z2.ID = Z1.ID)"]},{"id":2,"parent":1,"operation":"TableScan","objects":["TESTDB.TEMPORARY_DOC_TEST.Z2"],"expressions":["ID"],"partitionsAssigned":1,"partitionsTotal":1,"bytesAssigned":512},{"id":3,"parent":1,"operation":"JoinFilter","expressions":["joinKey: (Z2.ID = Z1.ID)"]},{"id":4,"parent":3,"operation":"TableScan","objects":["TESTDB.TEMPORARY_DOC_TEST.Z1"],"expressions":["ID"],"partitionsAssigned":1,"partitionsTotal":1,"bytesAssigned":512}]]} |
+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

Nachdem Sie die Ausgabe im JSON-Format in einer Tabelle gespeichert haben, können Sie die JSON-Ausgabe an die Funktion SYSTEM$EXPLAIN_JSON_TO_TEXT übergeben, um sie durch Aufrufen von SYSTEM$EXPLAIN_JSON_TO_TEXT in ein besser lesbares Textformat zu konvertieren:

SELECT SYSTEM$EXPLAIN_JSON_TO_TEXT(explain_plan) 
    FROM json_explain_output_for_analysis
    WHERE json_explain_output_for_analysis.ID = 1;
+------------------------------------------------------------------------------------------------------------------------------------+
| SYSTEM$EXPLAIN_JSON_TO_TEXT(EXPLAIN_PLAN)                                                                                          |
|------------------------------------------------------------------------------------------------------------------------------------|
| GlobalStats:                                                                                                                       |
| 	bytesAssigned=1024                                                                                                                                                                                                                                                                         |
| 	partitionsAssigned=2                                                                                                                                                                                                                                                                         |
| 	partitionsTotal=2                                                                                                                                                                                                                                                                         |
| Operations:                                                                                                                        |
| 1:0     ->Result  Z1.ID, Z2.ID                                                                                                     |
| 1:1          ->InnerJoin  joinKey: (Z2.ID = Z1.ID)                                                                                 |
| 1:2               ->TableScan  TESTDB.TEMPORARY_DOC_TEST.Z2  ID  {partitionsTotal=1, partitionsAssigned=1, bytesAssigned=512}      |
| 1:3               ->JoinFilter  joinKey: (Z2.ID = Z1.ID)                                                                           |
| 1:4                    ->TableScan  TESTDB.TEMPORARY_DOC_TEST.Z1  ID  {partitionsTotal=1, partitionsAssigned=1, bytesAssigned=512} |
|                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------+