카테고리:

시스템 함수

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,"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}]]} |
+-----------------------------------------------------+-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

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} |
|                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------+
맨 위로 이동