基于达梦的SQL等价改写优化案例精选第一部【一统天下】②分析函数的穿透之力
在SQL优化中,分析函数(Analytics Functions)是一类功能强大但常被忽视的工具。它们能在单次数据扫描中完成复杂的计算,避免多次访问相同数据。本案例将展示如何利用KEEP和DENSE_RANK函数组合,将多次表扫描简化为一次,大幅提升查询性能。案例2:KEEP与DENSE_RANK的完美配合在前一篇案例中,我们对一个复杂SQL进行了全面优化。今天,我们聚焦其中的一个关键环节:如何优
基于达梦的SQL等价改写优化案例精选第一部【一统天下】① count(case when)的合并魔力
SQL优化的核心在于深入理解业务需求,并通过改写SQL语句来提升效率。本文通过12个真实生产系统中的案例,展示了如何通过合并代码、减少表扫描等手段优化SQL...
小余买鱼与数据库优化【7】「大结局」——方法论应用案例(下)
1.2.1.3需求与设计(再次优化)遇到疑问最重要的就是,去理解需求是什么?真正的需求让我大吃一惊!原来该SQL1的语句在过程包中的代码是类似如下的:beginselect count(*) into v_cnt from t1 ;if v_cnt>0 then …A逻辑….else&nbs
小余买鱼与数据库优化【6】——方法论应用案例(上)
1.2 方法论应用案例好吧,不说故事了,和大家分享点工作中的数据库优化经典案例吧(啥,你说啥?你终于听到高级的了?哦,说案例就高级,讲故事就低级啊。。。。)某电信营运商生产系统出现故障,短信平台产生大量积压,维护人员跟踪发现,原因是后台短信平台进程调用数据库中某个过程包,而该过程包原先执行返回结果给后台进程在10秒以内,现在不知是何种原因过程包返回时间居然长达1分钟,所以导致短信后台程
小余买鱼与数据库优化【5】——买鱼买出方法论
1.1.2买鱼买出方法论1.1.2.1一套流程至此可以用一套完整的流程图来暂时结束《小余买鱼》系列故事,此套流程概括了本文全部精华思想。浓缩了笔者多年的调优心得,该图内容将在后续的描述中被不断印证!1.1.2.2两大 法宝上述总结的一套流程从小余买鱼系列故事演绎推理出来,从诊断和改进优化两个分支徐徐拉开优化方法论的序幕,形成了本文最宝贵精华部分。此外任何事物都可以多角度看待剖析。我们还可以将买鱼的
小余买鱼与数据库优化【4】——真正的需求
在前三集中,我们跟随小余学习了诊断与改进、需求与设计及资源的利用。今天,我们将看到优化思维的最高境界——超越表面需求,直击本质,挖掘出真正的需求。小余买鱼4—真正的需求又过了一个月,妈妈又准备让小余买草鱼来招待刚上门做客的大舅了,不过因为离晚饭时间很近了,妈妈希望能在20分钟内买好鱼,而此时家附近的农贸市场依然没有开张,小余判断,无论如何都不可能完成这个任务了,不过小余还是开动了脑筋。最终居然让妈
小余买鱼与数据库优化【3】——资源的利用
又过了几天,妈妈再次让小余去买鱼,这次楼下附近的农贸市场开放了。小余没能摆脱上次买鱼延续的思维惯式,选择让表哥帮忙一起开车去买鱼,结果到地下车库开车、到了农贸找车位停车...
小余买鱼与数据库优化【2】——需求与设计
一个月后,小余妈妈又准备开始做水煮活鱼了,妈妈还让小余去买一只草鱼回来。不过这次情况发生变化了,家附近的农贸市场因故关闭了,由于住的比较偏僻,还真的只能去20里外沃尔玛超市买鱼了。如果是以前,小余必然就是直接兴冲冲的一头冲出门,帮妈妈买鱼去。不过这一次...
小余买鱼与数据库优化【1】——诊断与改进
全文就从一个生活中的小故事开始吧,故事的名字叫:《小余买鱼1》 :一天下午4点多,小余妈妈想做水煮活鱼给家人吃,让小余去买一只草鱼回来。小余骑自行车到20里外的沃尔玛超市买到鱼然后返回。一到家,妈妈就开始责怪小余买鱼的时间花的太长了,因为都已经是下午6点半了,晚上7点一家人都安排好了外出的活动了,这下做水煮活鱼来不及了...
Oracle数据库设计规范篇{七}——【设计篇完结】(环境参数命名等综合规范)
通过本文的环境参数配置和命名规范指导,我们完成了Oracle数据库设计规范系列的最后一篇。良好的环境参数配置可以优化系统性能,而统一的命名规范则提高了系统的可读性和可维护性...
高考赋分制解析——从理解规则到计算实践,一文读懂!
高考为什么要采用赋分制,又是如何计算出来的?一文读懂!技术源于生活,下期,将更进一步,分析如何用SQL来模拟实现实现高考的赋分制...
Oracle数据库设计规范篇{六}——索引规范【下】(联合、无、失效索引及数量)
即可以建立 col1,col2 的联合索引,又可以建col2,col1的联合索引,此时如果存在col1 列单独查询较多的情况下,一般倾向于建col1,col2的联合索引...
Oracle数据库设计规范篇{五} ——索引规范【上】(分区、函数、位图及外键的索引)
# 3.索引规范## 3.1 用不上分区条件的局部索引不宜建分区表建立分区索引后,如果在查询应用中无法用到这个分区索引列的条件,索引读将可能遍历所有的分区,如果有100个分区,相当于遍历了100个小索引,将会严重影响性能,此时需要慎重考虑,判断是否需要修改为全局索引。```sql-- 创建分区表CREATE TABLE SALES_HISTORY ( SALE_ID NU
Oracle数据库设计规范篇{四}——物理设计规范【下】(列的设计、命名的规范)
采用有意义的字段名尽量采用有意义的字段名,使描述尽可能清楚,如采用缩写,尽量使用通用的缩写语言...
Oracle数据库设计规范篇{三}——物理设计规范【中】(分区设计规范)
2.3分区设计规范分区表设计总体原则:每个表必须包含以下属性参数: TABLESPACE,PCTUSED,STORAGE。根据表的不同属性进行表类型设计分区表:对于数据量比较大的表,根据表数据的属性进行分区,以得到较好的性能:如果表按某些字段进行增长,则采用按字段值范围进行范围分区。如果表按某个字段的几个关键值进行分布,则采用列表分区。对于静态表,则采用hash分区或列表分区。在范围分区中,如果数
Oracle数据库设计规范篇{二}——物理设计规范【上】(基本规范、表设计规范)
长度规范凡是需要命名的对象其标识符均不能超过30个字符,也即:Oracle中的表名、字段名,函数名,过程名,触发器名,序列名,视图名的长度均不能超过30个字符...
Oracle数据库设计规范篇{一}——表规范
1.表规范 1.1逻辑设计方法及规范一个优秀的数据库设计,应该是满足需求的前提下,实现性能最优的综合考虑,因此,数据库表的设计都应经过2个阶段:逻辑设计阶段(将需求转化为数据库表达的方式),物理设计阶段(对逻辑设计的结果物理调优设计)。1.1.1采用ER模型进行逻辑设计实体关系模型(ER模型,以下简称ER模型)是人们认识客观世界的一种方法、工具。ER模型的设计过程,基本上是两
通用SQL优化经典等价改写【七】——避免使用触发器
数据库设计与开发中,触发器是一种常用的数据库对象,可以在表发生特定事件时自动执行预定义的操作。然而,过度依赖触发器会带来一系列问题,尤其是性能方面的挑战。本文将通过实际案例,详细分析触发器的性能影响...
通用SQL优化经典等价改写【六】——减少函数调用
虽然我们应尽量避免在SQL中使用函数调用,但在实际开发中,有些复杂逻辑已被封装为函数,成为开发规范,开发人员难以避免使用。面对这种情况,即使无法完全避免函数调用,我们仍可通过减少调用次数来显著提升性能...
通用SQL优化经典等价改写【五】——避免函数调用
编写 SQL 时,我们通常要尽量避免在 SQL 中使用函数。可考虑将函数的写法转化为表连接的写法。这是因为在 SQL 里使用函数,会产生大量的递归调用。一般而言,表中有多少条记录,函数就会被调用多少次,这会导致性能急剧下降...