如何在 SQuirrel SQL 中查看 Oracle 执行计划?

Posted

技术标签:

【中文标题】如何在 SQuirrel SQL 中查看 Oracle 执行计划?【英文标题】:How do I see the Oracle execution plan in SQuirrel SQL? 【发布时间】:2018-05-29 08:15:42 【问题描述】:

我正在尝试使用 SQuirreL SQL 3.6 获取 Oracle (11) 的执行计划。

我可以在“结果”选项卡旁边看到一个“解释计划”选项卡,但它始终是空的。 当我第一次点击它时,我得到一个对话框,要求创建PLAN_TABLE,它工作但“解释计划”选项卡中的表格保持为空。

我尝试在查询前添加explain plan for,但这给了我一个Error: ORA-00905: missing keyword

【问题讨论】:

我没有 SQuirreL,但如果它有指定现有计划表的选项,您应该让它使用sys.plan_table$。这已成为多个 Oracle 版本的标准。 【参考方案1】:

独立于您的 SQL 客户端的简单方法:

EXPLAIN PLAN  SET STATEMENT_ID = 'yourTag' into   plan_table  FOR
select .... your query here ... from tab;
---    
SELECT * FROM table(DBMS_XPLAN.DISPLAY('plan_table', 'yourTag','ALL'));

作为查询的结果,您将获得完整的执行计划。 PLAN_TABLE 必须存在并且您的用户必须被授予读取和写入它的权限。

查询的示例输出

select * from dual where dummy = 'X';



Plan hash value: 272002086

----------------------------------------------------------------------------------
| Id  | Operation                 | Name | Rows  | Bytes | Cost (%CPU)| Time     |
----------------------------------------------------------------------------------
|   0 | SELECT STATEMENT          |      |     1 |     2 |     2   (0)| 00:00:01 |
|*  1 |  TABLE ACCESS STORAGE FULL| DUAL |     1 |     2 |     2   (0)| 00:00:01 |
----------------------------------------------------------------------------------

Query Block Name / Object Alias (identified by operation id):
-------------------------------------------------------------

   1 - SEL$1 / DUAL@SEL$1

Predicate Information (identified by operation id):
---------------------------------------------------

   1 - storage("DUMMY"='X')
       filter("DUMMY"='X')

Column Projection Information (identified by operation id):
-----------------------------------------------------------

   1 - "DUMMY"[VARCHAR2,1]

【讨论】:

您可以省略statement_id(包括任何现代Oracle版本的into plan_table),然后使用FROM table(DBMS_XPLAN.DISPLAY(format => 'ALL'));

以上是关于如何在 SQuirrel SQL 中查看 Oracle 执行计划?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Squirrel SQL 列出数据库中的所有表?

如何从非域注册的 Linux 机器使用 SQuirreL SQL 连接到 SQL Server?

Squirrel SQL 使用 Java.exe 的旧路径

CentOS-7.2安装SQuirreL SQL Client连接Hive

Squirrel SQL 渲染在 SQL 视图中闪烁

Apache Drill 0.9 和 SQuirreL SQL 客户端 - 无法列出 JDBC 驱动程序