如何在DB2 LUW中计算脚本的运行耗时?
在DB2 LUW中计算脚本运行耗时的正确方法
你原来的代码存在问题:三个独立的SELECT语句无法共享startdate和enddate的值,第三个查询会因变量未定义报错。以下是两种可行的实现方式:
方式一:使用会话变量(适合在SQL脚本/编辑器中执行)
-- 声明会话级变量存储时间戳 DECLARE start_ts TIMESTAMP; DECLARE end_ts TIMESTAMP; -- 记录开始时间 SET start_ts = CURRENT TIMESTAMP; -- ====================== -- 这里执行你的业务查询 -- 例如:SELECT * FROM your_target_table; -- ====================== -- 记录结束时间 SET end_ts = CURRENT TIMESTAMP; -- 计算并输出耗时(按需选择时间单位) SELECT TIMESTAMPDIFF(1, CHAR(end_ts - start_ts)) AS 耗时_秒, TIMESTAMPDIFF(2, CHAR(end_ts - start_ts)) AS 耗时_分钟, TIMESTAMPDIFF(4, CHAR(end_ts - start_ts)) AS 耗时_毫秒 FROM SYSIBM.SYSDUMMY1;
时间单位说明(TIMESTAMPDIFF第一个参数):
- 1:秒
- 2:分钟
- 4:毫秒
- 8:小时
- 16:天
方式二:使用DB2命令行变量(适合批量脚本执行)
# 记录开始时间到变量 db2 -v "VALUES CURRENT TIMESTAMP INTO :start_ts" # 执行你的业务查询脚本 db2 -vf your_business_queries.sql # 记录结束时间到变量 db2 -v "VALUES CURRENT TIMESTAMP INTO :end_ts" # 计算并输出耗时(以秒为例) db2 -v "SELECT TIMESTAMPDIFF(1, CHAR(:end_ts - :start_ts)) AS elapsed_seconds FROM SYSIBM.SYSDUMMY1"
内容的提问来源于stack exchange,提问作者Monika Niknejad
相关产品推荐
相关产品推荐

