注册
达梦数据库执行计划查看方式
专栏/培训园地/ 文章详情 /

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

gh 2024/03/20 3280 2 0
摘要

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

  1. 在 SQL 命令行使用 EXPLAIN 可以打印出语句的执行计划。
    1>使用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.

2>使用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语句的执行计划,如下图所示:
image.png

执行计划缩进显示,层次最深的最先执行,层次相同,上面的先执行。显示时已经按照层次缩进,因此先从最里层进行查看。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服