SYSTEM$EXPLAIN_JSON_TO_TEXT

SYSTEM$EXPLAIN_JSON_TO_TEXT

EXPLAIN 출력을 JSON에서 서식 있는 텍스트로 변환하는 시스템 함수예요.

출처: 공식 문서

본문

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

참고 (See also): SYSTEM$EXPLAIN_PLAN_JSON , EXPLAIN_JSON

구문 (Syntax)

SYSTEM$EXPLAIN_JSON_TO_TEXT( <explain_output_in_json_format> )

인자 (Arguments)

explain_output_in_json_format

JSON 호환 문자열로 EXPLAIN 출력을 담고 있는 문자열 또는 문자열로 평가되는 표현식. 입력이 문자열이면 문자열은 작은따옴표 '로 묶어야 합니다.

반환값 (Returns)

사람이 비교적 읽기 쉽도록 서식이 지정된 텍스트로 EXPLAIN 출력을 담고 있는 VARCHAR를 반환합니다.

사용 참고 (Usage notes)

  • 이 함수는 EXPLAIN 정보를 JSON에서 서식 있는 텍스트로 변환합니다. 종종 JSON 값은 SYSTEM$EXPLAIN_PLAN_JSON 함수에서 직접 또는 간접적으로 생성됩니다. 예를 들어 SYSTEM$EXPLAIN_PLAN_JSON의 출력을 테이블에 저장한 뒤, 나중에 이 SYSTEM$EXPLAIN_JSON_TO_TEXT 함수로 표시할 수 있습니다.
  • 문자열 리터럴이 입력으로 전달되면, 문자열 주위의 구분자는 작은따옴표 ' 또는 큰달러 기호 $$가 될 수 있습니다. 문자열 리터럴이 작은따옴표를 포함하고(큰달러 기호는 포함하지 않고) 있으면, 문자열을 큰달러 기호로 구분하면 문자열 안에 포함된 작은따옴표 문자를 이스케이프할 필요를 피할 수 있습니다.

예제 (Examples)

아래 예제는 다음 테이블들을 사용합니다:

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

EXPLAIN 출력을 JSON 형식으로 저장하면서 서식 있는 텍스트로 표시하고 싶으면 아래와 같이 SYSTEM$EXPLAIN_JSON_TO_TEXT()를 호출할 수 있습니다.

먼저 JSON 형식의 EXPLAIN 출력을 얻어 테이블에 저장합니다:

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을 테이블에 저장한 뒤, 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} |
|                                                                                                                                    |
+------------------------------------------------------------------------------------------------------------------------------------+

더 알아보기 (Learn more)