Exibe o plano EXPLAIN para uma consulta que foi enviada para execução.
STL_EXPLAIN permanece visível para todos os usuários. Os superusuários podem ver todas as linhas; usuários regulares podem ver somente seus próprios dados. Para obter mais informações, consulte Visibilidade de dados em tabelas e visualizações de sistema.
nota
STL_EXPLAIN contém apenas as consultas executadas em clusters principais. Ele não contém consultas executadas em clusters de escalabilidade simultânea ou em namespaces sem servidor. Para acessar os planos de explicação das consultas executadas em clusters principais, clusters de escalabilidade simultânea e namespaces sem servidor, recomendamos usar a visualização de monitoramento SYS SYS_QUERY_EXPLAIN. Os dados na exibição de monitoramento SYS são formatados para serem mais fáceis de usar e compreender.
Colunas da tabela
Nome da coluna | Tipo de dados | Descrição |
---|---|---|
userid | integer | O ID do usuário que gerou a entrada. |
consulta | integer | ID da consulta. A coluna de consulta pode ser usada para unir outras tabelas e exibições do sistema. |
nodeid | integer | O identificador do nó de plano, onde o nó mapeia para uma ou mais etapas na execução da consulta. |
parentid | integer | O identificador do nó de plano para um nó pai. Um nó pai tem um certo número de nós filho. Por exemplo, uma junção de mesclagem é o pai das varreduras em tabelas unidas. |
plannode | character(400) | O texto do nó de saída de EXPLAIN. Os nós de plano que se referem à execução em nós de computação recebem o prefixo XN na saída EXPLAIN. |
info | character(400) | As informações sobre o qualificador e o filtro do nó de plano. Por exemplo, as condições de junção e as restrições da cláusula WHERE estão incluídas nesta coluna. |
Consultas de exemplo
Considere a seguinte saída de EXPLAIN para uma consulta de junção agregada:
explain select avg(datediff(day, listtime, saletime)) as avgwait
from sales, listing where sales.listid = listing.listid;
QUERY PLAN
------------------------------------------------------------------------------
XN Aggregate (cost=6350.30..6350.31 rows=1 width=16)
-> XN Hash Join DS_DIST_NONE (cost=47.08..6340.89 rows=3766 width=16)
Hash Cond: ("outer".listid = "inner".listid)
-> XN Seq Scan on listing (cost=0.00..1924.97 rows=192497 width=12)
-> XN Hash (cost=37.66..37.66 rows=3766 width=12)
-> XN Seq Scan on sales (cost=0.00..37.66 rows=3766 width=12)
(6 rows)
Se você executar essa consulta e o ID de consulta for 10, use a tabela STL_EXPLAIN para visualizar os mesmos tipos de informações que o comando EXPLAIN retorna:
select query,nodeid,parentid,substring(plannode from 1 for 30),
substring(info from 1 for 20) from stl_explain
where query=10 order by 1,2;
query| nodeid |parentid| substring | substring
-----+--------+--------+--------------------------------+-------------------
10 | 1 | 0 |XN Aggregate (cost=6717.61..6 |
10 | 2 | 1 | -> XN Merge Join DS_DIST_NO | Merge Cond:("outer"
10 | 3 | 2 | -> XN Seq Scan on lis |
10 | 4 | 2 | -> XN Seq Scan on sal |
(4 rows)
Considere a seguinte consulta:
select event.eventid, sum(pricepaid)
from event, sales
where event.eventid=sales.eventid
group by event.eventid order by 2 desc;
eventid | sum
--------+----------
289 | 51846.00
7895 | 51049.00
1602 | 50301.00
851 | 49956.00
7315 | 49823.00
...
Se o ID da consulta for 15, a seguinte consulta de visualização do sistema retornará os nós do plano que foram concluídos. Nesse caso, a ordem dos nós é invertida para mostrar a ordem real de execução:
select query,nodeid,parentid,substring(plannode from 1 for 56)
from stl_explain where query=15 order by 1, 2 desc;
query|nodeid|parentid| substring
-----+------+--------+--------------------------------------------------------
15 | 8 | 7 | -> XN Seq Scan on eve
15 | 7 | 5 | -> XN Hash(cost=87.98..87.9
15 | 6 | 5 | -> XN Seq Scan on sales(cos
15 | 5 | 4 | -> XN Hash Join DS_DIST_OUTER(cos
15 | 4 | 3 | -> XN HashAggregate(cost=862286577.07..
15 | 3 | 2 | -> XN Sort(cost=1000862287175.47..10008622871
15 | 2 | 1 | -> XN Network(cost=1000862287175.47..1000862287197.
15 | 1 | 0 |XN Merge(cost=1000862287175.47..1000862287197.46 rows=87
(8 rows)
A consulta a seguir recupera os IDs de consulta de todos os planos de consulta que contêm uma função de janela:
select query, trim(plannode) from stl_explain
where plannode like '%Window%';
query| btrim
-----+------------------------------------------------------------------------
26 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33)
27 | -> XN Window(cost=1000985348268.57..1000985351256.98 rows=170 width=33)
(2 rows)