카테고리:

시스템 함수

SYSTEM$EXPLAIN_JSON_TO_TEXT

이 함수는 EXPLAIN 출력을 JSON에서 형식이 지정된 텍스트로 변환합니다.

참고 항목:

SYSTEM$EXPLAIN_PLAN_JSON , EXPLAIN_JSON

구문

SYSTEM$EXPLAIN_JSON_TO_TEXT( <explain_output_in_json_format> )

인자

explain_output_in_json_format

EXPLAIN 출력을 JSON 호환 문자열로서 포함하는 문자열 또는 문자열로 평가되는 식입니다. 입력이 문자열인 경우, 문자열을 작은따옴표 ' 로 묶어야 합니다.

반환

이 함수는 EXPLAIN 출력을 포함하는 VARCHAR를 사람이 비교적 쉽게 읽을 수 있도록 형식이 지정된 텍스트로 반환합니다.

사용법 노트

  • 이 함수는 EXPLAIN 정보를 JSON에서 형식이 지정된 텍스트로 변환합니다. 흔히 JSON 값은 SYSTEM$EXPLAIN_PLAN_JSON 함수에서 직접 또는 간접적으로 생성됩니다. 예를 들어, SYSTEM$EXPLAIN_PLAN_JSON의 출력을 테이블에 저장한 다음, 나중에 이 SYSTEM$EXPLAIN_JSON_TO_TEXT 함수를 사용하여 표시할 수 있습니다.

  • 문자열 리터럴이 입력으로 전달된 경우, 문자열 주위의 구분 기호는 작은따옴표 ' 또는 이중 달러 기호 $$ 일 수 있습니다. 문자열 리터럴이 작은따옴표를 포함하는 경우(이중 달러 기호를 포함하지 않음), 이중 달러 기호로 문자열을 구분하면 문자열 내부에 포함된 작은따옴표 문자를 이스케이프할 필요가 없습니다.

예

아래 예에서는 다음 테이블을 사용합니다.

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

EXPLAIN 출력을 JSON 형식으로 저장하되, 형식이 지정된 텍스트로 표시하려는 경우, 아래와 같이 SYSTEM$EXPLAIN_JSON_TO_TEXT() 를 호출할 수 있습니다.

먼저, EXPLAIN 출력을 JSON 형식으로 가져와 테이블에 저장합니다.

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은 아래와 같이 출력됩니다.

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,"parentOperators":[0],"operation":"InnerJoin","expressions":["joinKey: (Z2.ID = Z1.ID)"]},{"id":2,"parentOperators":[1],"operation":"TableScan","objects":["TESTDB.TEMPORARY_DOC_TEST.Z2"],"expressions":["ID"],"partitionsAssigned":1,"partitionsTotal":1,"bytesAssigned":512},{"id":3,"parentOperators":[1],"operation":"JoinFilter","expressions":["joinKey: (Z2.ID = Z1.ID)"]},{"id":4,"parentOperators":[3],"operation":"TableScan","objects":["TESTDB.TEMPORARY_DOC_TEST.Z1"],"expressions":["ID"],"partitionsAssigned":1,"partitionsTotal":1,"bytesAssigned":512}]]} |
+-----------------------------------------------------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

JSON을 테이블에 저장한 후, SYSTEM$EXPLAIN_JSON_TO_TEXT를 호출하여 JSON을 SYSTEM$EXPLAIN_JSON_TO_TEXT 함수에 전달해 사람이 읽을 수 있는 텍스트 형식으로 변환할 수 있습니다.

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} |
|                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------+