在db2数据库9.7中,有时候执行一条update或select语句,要耗时很久,几个小

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在db2数据库9.7中,有时候执行一条update或select语句,要耗时很久,几个小相关的知识,希望对你有一定的参考价值。

在db2数据库9.7中,有时候执行一条update或select语句,要耗时很久,几个小时,甚至一直在执行(跑了一天还在执行),但是若rustats后,几分钟或几秒就可执行完毕,这是为什么啊?在update过程中若不想停掉这条sql,可以做什么处理啊?

参考技术A select * from
(
select a.*,row_number() over(partition by 分组字段 order by 排序字段) rn from table
) b where rn = 1
上边的可以取一条出来,主要看你的分组字段和排序字段的设置

mysql:update select groupby orderby(分组排序后更新第一条数据)

参考技术A

有时候我们需要更新table中分组排序后的第一条数据。比如:给各学科分数第一名的学生打标。

如上图所示,现在有一张学生成绩表,我想要各科第一名的学生打标,也就是向mark字段中写入“第一名”标记。那么预想得到的效果应该是这样的:

由于需要使用到group by , 所以需要先检查下mysql对应的sql_mode 是否包含 ONLY_FULL_GROUP_BY ,如果包含,则将sql_mode中的ONLY_FULL_GROUP_BY移除掉,否则下面的SQL可能执行不成功

上面sql中t0表为什么需要使用到DISTINCT,可以查看文章:

执行结果:

SQL分析:

上面的SQL感觉还是过于复杂了,看过下面的文章后:

可以将上面的SQL优化优化.....

优化版写法:

执行结果:

SQL分析:

执行结果:

SQL分析:

上面的SQL中使用到了窗口函数,关于窗口函数相关文章:

以上是关于在db2数据库9.7中,有时候执行一条update或select语句,要耗时很久,几个小的主要内容,如果未能解决你的问题,请参考以下文章

db2audit 审计 (适用于db2 9.7)

Docker打DB2 9.7镜像采坑相关

DB2 分区表的效率问题及如何建立索引

Linux系统安装DB2数据库的详细步骤

db2 V9.1 死锁

mysql 插入更新在一条sql ON DUPLICATE KEY UPDATE