达梦技术社区:http://eco.dameng.com/
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; --查看数据
结果如下图所示:
2、动态修改参数
在管理工具中执行如下语句:
SF_SET_SESSION_PARA_VALUE(‘MONITOR_SQL_EXEC’,1); --动态打开会话级参数MONITOR_SQL_EXEC,该设置只对本会话有效,其余会话无影响
执行结果如下图所示:
3、执行sql语句并获取操作符执行时间
SELECT A.NAME,LISTAGG(A.COMPANY,‘->’) WITHIN GROUP (ORDER BY A.ENTRY_DATE) FROM TEST A GROUP BY A.NAME;
执行结果如下图所示:
依次点击“消息”,执行号“590”,(或者执行 et(590) )弹出如下的操作符执行时间对话框:
执行结果如下图所示:
注:
如上图所示,该sql语句共涉及6个操作符,按照执行的先后顺序分别是SAGR2、SORT3、NSET2、CSCN2、DLCK、PRJT2。
其中,耗时最长的操作符是SAGR2,耗时1072微秒,占总执行时间的63.47%;耗时排第二位的操作符是SORT3,耗时536微秒,占总执行时间的31.73%。
根据上述的分析,我们就需要针对这2个操作符进行针对性的优化。