? Oracle PL/SQL 浅析IF和ELSIF的不平等_MariaDB_青云站长教程网 bet36游戏_网站下载_bet36多少地方_bet36最新体育官网
欢迎来到站长教程网!

MariaDB

当前位置:主页 > 数据库 > MariaDB >

Oracle PL/SQL 浅析IF和ELSIF的不平等

时间:2019-11-04|栏目:MariaDB|点击: 次

之前写过一篇文章,叫:Oracle PL/SQL 从if 到 then的“艺术鉴赏”,地址:

现在范围扩展至每个平行的IF条件,是否应该注意点啥

在条件是平行的时候,是否IF一定是可以无序的呢?

先看个小实验:

hr@ORCL> ed
Wrote file afiedt.buf

1? create or replace procedure p_test_if(p_num pls_integer)
? 2? as
? 3? v_num PLS_INTEGER:=p_num;
? 4? begin
? 5? ? for i in 1..1000000
? 6? ? ? loop
? 7? ? ? ? if p_num=1
? 8? ? ? ? ? then
? 9? ? ? ? ? ? v_num:=p_num+1;
?10? ? ? ? elsif p_num=2
?11? ? ? ? ? then
?12? ? ? ? ? ? v_num:=p_num+1;
?13? ? ? ? elsif p_num=3
?14? ? ? ? ? then
?15? ? ? ? ? ? v_num:=p_num+1;
?16? ? ? ? else
?17? ? ? ? ? ? v_num:=p_num+1;
?18? ? ? ? end if;
?19? ? ? end loop;
?20* end p_test_if;
hr@ORCL> /

Procedure created.

hr@ORCL> set timing on
hr@ORCL> exec p_test_if(1);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.13
hr@ORCL> exec p_test_if(2);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.18
hr@ORCL> exec p_test_if(3);

PL/SQL procedure successfully completed.

Elapsed: 00:00:00.25

三次调用的时间都不相同,调用值落在IF逻辑越靠前,查询越快速

原理其实很简单,条件靠前可以减少判断的次数,因为满足条件后不会再尝试后面的表达式

所以,即便IF逻辑是平行的,也会根据调用PL/SQL过程或函数的入参的值的分布情况来决定IF的顺序

入参越是频繁调用的值,对应的IF逻辑就越需要靠前

因为Oracle对IF的调用是靠前的调用执行的更快速

这个告诉我们,在PL/SQL开发中,对经常调用的函数或过程的输入值的分布范围最好有一定的了解

对经常要输入的参数条件,代码中要放在IF的前面,会有一定的性能提高

上一篇:Oracle PL/SQL 从if 到 then的“艺术鉴赏”

栏????目:MariaDB

下一篇:解决ORA-01882: 未找到时区区域 %s

本文标题:Oracle PL/SQL 浅析IF和ELSIF的不平等

本文地址:http://www.jh-floor.com/shujuku/Mariadb/118333.html

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:888888 | 邮箱:888888#qq.com(#换成@)

Copyright ? 2002-2017 青云站长教程网 版权所有 琼ICP备xxxxxxxx号