注册
如何看某条sql语句每个操作符的执行时间?
技术分享/ 文章详情 /

如何看某条sql语句每个操作符的执行时间?

六问 2023/02/07 1616 1 4

1、创建测试表

DROP TABLE if EXISTS TEST;
CREATE TABLE TEST (NAME VARCHAR2(200),ENTRY_DATE DATE,COMPANY VARCHAR2(200));
INSERT INTO TEST VALUES(‘王强’,date’2008-1-1’,‘电信’);
INSERT INTO TEST VALUES(‘王强’,date’2009-1-1’,‘移动’);
INSERT INTO TEST VALUES(‘王强’,date’2010-1-1’,‘联通’);
INSERT INTO TEST VALUES(‘李四’,date’2008-1-1’,‘电网’);
INSERT INTO TEST VALUES(‘李四’,date’2009-1-1’,‘财政局’);
INSERT INTO TEST VALUES(‘张三’,date’2012-12-1’,‘腾讯’);
INSERT INTO TEST VALUES(‘张三’,date’2013-12-1’,‘阿里’);
INSERT INTO TEST VALUES(‘张三’,date’2014-12-1’,‘美团’);
INSERT INTO TEST VALUES(‘张三’,date’2015-12-1’,‘饿了么’);
COMMIT;
–SELECT * FROM TEST; --查看数据
结果如下图所示:
image.png

2、动态修改参数

在管理工具中执行如下语句:
SF_SET_SESSION_PARA_VALUE(‘MONITOR_SQL_EXEC’,1); --动态打开会话级参数MONITOR_SQL_EXEC,该设置只对本会话有效,其余会话无影响
执行结果如下图所示:
image.png

3、执行sql语句并获取操作符执行时间

SELECT A.NAME,LISTAGG(A.COMPANY,‘->’) WITHIN GROUP (ORDER BY A.ENTRY_DATE) FROM TEST A GROUP BY A.NAME;
执行结果如下图所示:
image.png
依次点击“消息”,执行号“590”,(或者执行 et(590) )弹出如下的操作符执行时间对话框:
执行结果如下图所示:
image.png

注:

如上图所示,该sql语句共涉及6个操作符,按照执行的先后顺序分别是SAGR2、SORT3、NSET2、CSCN2、DLCK、PRJT2。
其中,耗时最长的操作符是SAGR2,耗时1072微秒,占总执行时间的63.47%;耗时排第二位的操作符是SORT3,耗时536微秒,占总执行时间的31.73%。
根据上述的分析,我们就需要针对这2个操作符进行针对性的优化。

评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服