ITPub博客

首页 > 数据库 > Oracle > [20240905]Select vs Assign – How To Assign PLSQL Variables.txt

[20240905]Select vs Assign – How To Assign PLSQL Variables.txt

原创 Oracle 作者:lfree 时间:2024-09-09 20:30:20 0 删除 编辑

[20240905]Select vs Assign – How To Assign PLSQL Variables.txt

--//重复测试:
1.环境:
Elapsed: 00:00:02.79
SCOTT@book01p> @ver2
==============================
PORT_STRING                   : x86_64/Linux 2.4.xx
VERSION                       : 21.0.0.0.0
BANNER                        : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
BANNER_FULL                   : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
Version 21.3.0.0.0
BANNER_LEGACY                 : Oracle Database 21c Enterprise Edition Release 21.0.0.0.0 - Production
CON_ID                        : 0
PL/SQL procedure successfully completed.

2.建立测试脚本:
$ cat select.sql1
set timing on
declare
    vDate date;
        vString1 varchar2(32);
    vString2 varchar2(32);
begin
    for i in 1..1e6
    loop
--//select sysdate into vDate from dual;
   SELECT NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1'), SYS_CONTEXT ('USERENV','SID') INTO vString1,vString2 FROM DUAL;
    end loop;
end;
/

$ cat assign.sql
set timing on
declare
    vDate date;
        vString1 varchar2(32);
        vString2 varchar2(32);
begin
    for i in 1..1e6
    loop
--//        vDate := sysdate;
    vString1 := NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1');
    vString2 := SYS_CONTEXT ('USERENV','SID');
    end loop;
end;
/


SCOTT@book01p> @ select.sql1
PL/SQL procedure successfully completed.
Elapsed: 00:00:13.05

SCOTT@book01p> @ assign.sql
PL/SQL procedure successfully completed.
Elapsed: 00:00:02.79

--//通过这样方法简单sql语句执行,性能提高 13.05/2.79 = 4.68倍.


SYS@book> @ashtop sql_id 1=1  trunc(sysdate)+17/24+32/1440+44/86400  trunc(sysdate)+17/24+33/1440+23/86400

    Total                                                                         Distinct Distinct    Distinct
  Seconds     AAS %This   SQL_ID        FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1
--------- ------- ------- ------------- ------------------- ------------------- ---------- -------- -----------
       13      .3   57% |               2024-09-05 17:32:46 2024-09-05 17:33:20          1       11          11
        9      .2   39% | 1w3bnfhyp4u5h 2024-09-05 17:32:49 2024-09-05 17:33:00          9        9           9
        1      .0    4% | f1hbvj9nmqvy3 2024-09-05 17:32:48 2024-09-05 17:32:48          1        1           1

SYS@book> @ sql_id 1w3bnfhyp4u5h
--SQL_ID = 1w3bnfhyp4u5h

SELECT NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1'), SYS_CONTEXT ('USERENV','SID') FROM DUAL;

SYS@book> @ sql_id f1hbvj9nmqvy3

--SQL_ID = f1hbvj9nmqvy3

declare
    vDate date;
        vString1 varchar2(32);
    vString2 varchar2(32);
begin
    for i in 1..1e6
    loop
--//select sysdate into vDate from dual;
   SELECT NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1'), SYS_CONTEXT ('USERENV','SID') INTO vString1,vString2 FROM DUAL;
    end loop;
end;;


SYS@book> @ashtop sql_id 1=1   trunc(sysdate)+17/24+34/1440+18/86400 trunc(sysdate)+17/24+34/1440+26/86400

    Total                                                                         Distinct Distinct    Distinct
  Seconds     AAS %This   SQL_ID        FIRST_SEEN          LAST_SEEN           Execs Seen  Tstamps Execs Seen1
--------- ------- ------- ------------- ------------------- ------------------- ---------- -------- -----------
        3      .4  100% | 285ch5t1rgja4 2024-09-05 17:34:22 2024-09-05 17:34:24          1        3           1

SYS@book> @ sql_id 285ch5t1rgja4

--SQL_ID = 285ch5t1rgja4

declare
    vDate date;
        vString1 varchar2(32);
        vString2 varchar2(32);
begin
    for i in 1..1e6
    loop
--//        vDate := sysdate;
    vString1 := NVL (SYS_CONTEXT ('userenv', 'ip_address'), '127.0.0.1');
    vString2 := SYS_CONTEXT ('USERENV','SID');
    end loop;
end;;

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-3027306/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4006
  • 访问量
    7970381