Oracle SQL 从执行计划中检索具有表名的列名作为表
Posted
技术标签:
【中文标题】Oracle SQL 从执行计划中检索具有表名的列名作为表【英文标题】:Oracle SQL retrieve Column Names with table names from execution plan as a Table 【发布时间】:2021-12-22 07:43:33 【问题描述】:我需要使用表名从执行计划列名中检索。我可以看到解释计划并看到投影列,但我无法从这部分检索,因为它不是表格。是否有任何表格包含任何格式的执行计划,例如 XML 或关系格式?
Additonaly : "SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY())" 这无济于事,因为这会在一列中产生结果。
【问题讨论】:
你试过DBMS_XPLAN.DISPLAY_PLAN()
吗?似乎设置 type
参数可能会给你想要的东西。
【参考方案1】:
由于 DBMS_XPLAN 函数只返回 CLOB,您需要自己解析字段 - 例如:
SELECT to_number(regexp_substr(plan_table_output, '[^|]+', 1, 1)) id,
regexp_substr(plan_table_output, '[^|]+', 1, 2) operation,
regexp_substr(plan_table_output, '[^|]+', 1, 3) name,
regexp_substr(plan_table_output, '[^|]+', 1, 4) "ROWS",
regexp_substr(plan_table_output, '[^|]+', 1, 5) bytes,
regexp_substr(plan_table_output, '[^|]+', 1, 6) cost
from table(dbms_xplan.display)
where instr(plan_table_output, '|') = 1
and plan_table_output <> '| Id | Operation | Name | Rows | Bytes | Cost (%CPU)|';
【讨论】:
以上是关于Oracle SQL 从执行计划中检索具有表名的列名作为表的主要内容,如果未能解决你的问题,请参考以下文章