GET_QUERY_OPERATOR_STATS 및 EXPLAIN 함수와 명령: 배열로 표현되는 상위 연산자¶
다음 명령과 함수는 쿼리 실행에 대한 세부 정보를 제공합니다.
EXPLAIN, EXPLAIN USING TABULAR 및 EXPLAIN USING JSON(EXPLAIN USING TEXT에는 영향을 미치지 않음)
이러한 명령과 함수의 출력에는 쿼리를 구성하는 연산자 노드 트리에 각 연산자 노드에 대한 정보가 포함됩니다.
배경¶
현재 이 정보에는 단일 상위 노드를 식별하는 열 또는 속성이 포함됩니다. 연산자 노드에 여러 상위 노드가 있는 상황을 다루는 것은 아닙니다.
예를 들어, 다음 쿼리의 프로필을 생성한다고 가정해 보겠습니다.
WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
이 쿼리의 프로필에서 WithClause [4]
노드에는 다음과 같은 여러 상위 노드가 있습니다.
위 쿼리의 경우 GET_QUERY_OPERATOR_STATS 및 EXPLAIN 명령과 함수의 출력에는 WithReference [3]
을 WithClause [4]
의 상위 노드로 식별하는 열 또는 속성이 있습니다. 하지만 두 개의 상위 노드(WithReference [3]
및 WithReference [8]
)가 있습니다.
출력 변경 사항¶
현재 릴리스에서는 상위 노드의 기존 열 또는 속성이 상위 노드의 ID로 구성된 배열을 포함하는 다음 열 또는 속성 중 하나로 바뀝니다.
SQL 명령 또는 함수 |
기존 열 또는 속성 |
새 열 또는 속성 |
---|---|---|
EXPLAIN 및 SYSTEM$EXPLAIN_PLAN_JSON |
|
|
GET_QUERY_OPERATOR_STATS |
|
|
EXPLAIN 명령 및 EXPLAIN_JSON 함수의 테이블 형식 출력 변경 사항¶
다음 문을 실행한다고 가정해 보겠습니다.
EXPLAIN WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
출력이 아래 설명과 같이 변경됩니다.
- 이전:
출력에 단일 상위 노드 ID를 포함한 상위 열이 포함됩니다.
+------+------+--------+---------------+ ... | step | id | parent | operation | ... +------+------+--------+---------------+ ... | NULL | NULL | NULL | GlobalStats | ... | 1 | 0 | NULL | Result | ... | 1 | 1 | 0 | UnionAll | ... | 1 | 2 | 1 | Filter | ... | 1 | 3 | 2 | WithReference | ... | 1 | 4 | 3 | WithClause | ... ...
- 현재:
출력에 상위 노드 ID로 구성된 배열을 포함한 parentOperators 열이 포함됩니다.
+------+------+-----------------+---------------+ ... | step | id | parentOperators | operation | ... |------+------+-----------------+---------------+ ... | NULL | NULL | NULL | GlobalStats | ... | 1 | 0 | NULL | Result | ... | 1 | 1 | [0] | UnionAll | ... | 1 | 2 | [1] | Filter | ... | 1 | 3 | [2] | WithReference | ... | 1 | 4 | [3, 8] | WithClause | ... ...
EXPLAIN_JSON 함수의 경우 함수에 전달된 계획에 상위 연산자에 대한 정보가 포함되지 않은 경우 parentOperators
열은 NULL이 됩니다.
EXPLAIN 명령과 SYSTEM$EXPLAIN_PLAN_JSON의 JSON 출력 변경 사항¶
쿼리 계획의 JSON 출력을 생성하는 문을 실행한다고 가정해 보겠습니다. 예:
EXPLAIN USING JSON WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
출력이 아래 설명과 같이 변경됩니다.
- 이전:
출력에 단일 상위 노드 ID를 포함한 상위 속성이 포함됩니다.
{ ... "Operations": [[ ... {"id":1,"parent":0,"operation":"UnionAll"}, {"id":2,"parent":1,"operation":"Filter", ...}, {"id":3,"parent":2,"operation":"WithReference"}, {"id":4,"parent":3,"operation":"WithClause", ...}, ...
- 현재:
출력에 상위 노드 ID로 구성된 배열을 포함한 parentOperators 속성이 포함됩니다.
{ ... "Operations":[[ ... {"id":1,"operation":"UnionAll","parentOperators":[0]}, {"id":2,"operation":"Filter",... , "parentOperators":[1]}, {"id":3,"operation":"WithReference","parentOperators":[2]}, {"id":4,"operation":"WithClause",... ,"parentOperators":[3,8]}, ...
GET_QUERY_OPERATOR_STATS 함수 출력의 변경 사항¶
다음 문을 실행한다고 가정해 보겠습니다.
WITH wv AS (
SELECT a FROM t WHERE a % 2 = 1
)
SELECT a FROM wv WHERE a % 3 = 1
UNION ALL
SELECT a FROM wv WHERE a % 5 = 1;
SET lid = LAST_QUERY_ID();
SELECT * FROM TABLE(GET_QUERY_OPERATOR_STATS($lid));
출력이 아래 설명과 같이 변경됩니다.
- 이전:
출력에 단일 상위 노드 ID를 포함한 PARENT_OPERATOR_ID 열이 포함됩니다.
+-----+---------+-------------+--------------------+---------------+ ... | ... | STEP_ID | OPERATOR_ID | PARENT_OPERATOR_ID | OPERATOR_TYPE | ... +-----+---------+-------------+--------------------+---------------+ ... | ... | 1 | 0 | NULL | Result | ... | ... | 1 | 1 | 0 | UnionAll | ... | ... | 1 | 2 | 1 | Filter | ... | ... | 1 | 3 | 2 | WithReference | ... | ... | 1 | 4 | 3 | WithClause | ... ...
- 현재:
출력에 상위 노드 ID로 구성된 배열을 포함한 PARENT_OPERATORS 열이 포함됩니다.
|-----+---------+-------------+------------------+---------------+ ... | ... | STEP_ID | OPERATOR_ID | PARENT_OPERATORS | OPERATOR_TYPE | ... |-----+---------+-------------+------------------+---------------+ ... | ... | 1 | 0 | NULL | Result | ... | ... | 1 | 1 | [ | UnionAll | ... | | | | 0 | | ... | | | | ] | | ... | ... | 1 | 2 | [ | Filter | ... | | | | 1 | | ... | | | | ] | | ... | ... | 1 | 3 | [ | WithReference | ... | | | | 2 | | ... | | | | ] | | ... | ... | 1 | 4 | [ | WithClause | ... | | | | 3, | | ... | | | | 8 | | ... | | | | ] | | ... ...
참조: 1175