达梦数据库执行计划查看方式

达梦数据库执行计划查看方式

数据库执行计划决定了SQL语句的执行方式,即决定如何访问存储设备中的数据,得到期望结果,它同时反应了数据访问方式和访问顺序。
达梦数据库执行计划是由查询优化器为SQL语句设计的执行方式,交给执行器去执行。达梦数据库查看SQL语句执行计划,主要有以下三种方式:
1. 在 SQL 命令行使用 EXPLAIN 可以打印出语句的执行计划。
使用EXPLAIN命令来查看SQL执行计划:

SQL> explain select * from sales.salesorder_detail; 
1   #NSET2: [0, 4, 102]  
2     #PRJT2: [0, 4, 102]; exp_num(7), is_atom(FALSE)  
3      #CSCN2: [0, 4, 102]; INDEX33555525(SALESORDER_DETAIL)

used time: 8.897(ms). Execute id is 0.

还可以使用EXPLAIN FOR命令来查看SQL执行计划:

explain for select * from dmhr.employee;

LINEID     PLAN_ID     PLAN_NAME CREATE_TIME                                                                                       LEVEL_ID    OPERATION TAB_NAME IDX_NAME      SCAN_TYPE SCAN_RANGE ROW_NUMS             BYTES       COST                 CPU_COST             IO_COST             
---------- ----------- --------- ---------------------------------------------------------------------------------------------------- ----------- --------- -------- ------------- --------- ---------- -------------------- ----------- -------------------- -------------------- --------------------
           FILTER JOIN_COND ADVICE_INFO PSTART      PSTOP      
           ------ --------- ----------- ----------- -----------
1          6           NULL      2020-11-08 20:44:05.000000                                                                           0           NSET2     NULL     NULL          NULL      NULL       856                  280         0                    0                    0
           NULL   NULL      NULL        0           0

2          6           NULL      2020-11-08 20:44:05.000000                                                                           1           PRJT2     NULL     NULL          NULL      NULL       856                  280         0                    0                    0
           NULL   NULL      NULL        0           0

3          6           NULL      2020-11-08 20:44:05.000000                                                                           2           CSCN2     EMPLOYEE INDEX33555540 NULL      NULL       856                  280         0                    0                    0
           NULL   NULL      NULL        0           0



1   #NSET2: [0, 1, 504] 
2     #PRJT2: [0, 1, 504]; exp_num(20), is_atom(FALSE) 
3       #SLCT2: [0, 1, 504]; 
4         #CSCN2: [0, 10, 504]; INDEX33555436(##PLAN_TABLE)

used time: 6.080(ms). Execute id is 50.

从上面两个结果来看,explain和explain for均显示执行计划,但explain for显示的结果更加详细。
2. 在SQL 命令行中设置AUTOTRACE参数值,查看执行计划。
AUTOTRACE参数用于设置执行计划和统计信息的跟踪。
语法如下:
SET AUTOTRACE <OFF(默认值) | NL | INDEX | ON|TRACE>

  • 当 SET AUTOTRACE OFF 时,停止 AUTOTRACE 功能,常规执行语句。
  • 当 SET AUTOTRACE NL 时,开启 AUTOTRACE 功能,不执行语句,如果执行计划中有嵌套循环操作,那么打印 NL
    操作符的内容。
  • 当 SET AUTOTRACE INDEX(或者 ON)时,开启 AUTOTRACE
    功能,不执行语句,如果有表扫描,那么打印执行计划中表扫描的方式、表名和索引。
  • 当 SET AUTOTRACE TRACE 时,开启 AUTOTRACE 功能,执行语句,打印执行计划。此功能与服务器 EXPLAIN语句的区别在于,EXPLAIN 只生成执行计划,并不会真正执行SQL 语句,因此产生的执行计划有可能不准。而 TRACE获得的执行计划,是服务器实际执行的计划
SQL> set autotrace trace
SQL> select * from sales.salesorder_detail;

LINEID     SALESORDERID SALESORDER_DETAILID CARRIERNO PRODUCTID   ORDERQTY    LINETOTAL
---------- ------------ ------------------- --------- ----------- ----------- ---------
1          1            1                   2007052   1           1           15.2000
2          1            2                   2007053   3           1           21.7000
3          2            1                   2007052   1           1           15.2000
4          2            2                   2007053   3           1           21.7000


1   #NSET2: [0, 4, 102] 
2     #PRJT2: [0, 4, 102]; exp_num(7), is_atom(FALSE) 
3       #CSCN2: [0, 4, 102]; INDEX33555525(SALESORDER_DETAIL)

used time: 4.648(ms). Execute id is 93.

3.在manager图形化管理工具中启动执行计划。
在manager工具中,在工具栏有显示执行计划按钮,可以显示出来SQL语句的执行计划,如下图所示:
在这里插入图片描述
在这里插入图片描述
执行计划缩进显示,层次最深的最先执行,层次相同,上面的先执行。显示时已经按照层次缩进,因此先从最里层进行查看。

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值