[20180907]insert+with+select.txt

来源:这里教程网 时间:2026-03-03 11:58:04 作者:

[20180907]insert+with+select.txt --//开发写一条批量插入语句效率太低,我看了一下,要访问视图gv$session,真不知道要现实某些特殊功能,需要这样操作. --//无法理解的是应用代码去访问gv$session视图,不理解!!我个人反对应用程序访问这些视图,可以还需要授权. --//我同事竟然为了规避授权,在sys下建立存储过程,通过job定时调度. --//在where条件里面存在条件: exists (select 1    from gv$session   where abs(logon_time - a.dlsj) <= 1 / 1440     and a.jsjm = TERMINAL     and upper(PROGRAM) = 'XXXX.EXE'); --//我想一下,也许改成with 先获得图gv$session需要的结果集合,然后在处理也许效率高一些. --//因为前面这样每次都要探察gv$session效率很低,这个批量插入1次不到200条,需要接近2秒完成. --//自己先测试insert,with,select这样模式是否可行. 1.环境: SCOTT@test01p> @ ver1 PORT_STRING           VERSION    BANNER                                                                               CON_ID --------------------- ---------- -------------------------------------------------------------------------------- ---------- IBMPC/WIN_NT64-9.1.0  12.1.0.1.0 Oracle Database 12c Enterprise Edition Release 12.1.0.1.0 - 64bit Production              0 create table empx as select * from emp where 1=2; 2.插入: SCOTT@test01p> insert into empx  with a as (select * from emp where deptno=10) select * from a; 3 rows created. SCOTT@test01p> commit ; Commit complete. SCOTT@test01p> select * from empx;      EMPNO ENAME      JOB              MGR HIREDATE                   SAL       COMM     DEPTNO ---------- ---------- --------- ---------- ------------------- ---------- ---------- ----------       7782 CLARK      MANAGER         7839 1981-06-09 00:00:00       2450                    10       7839 KING       PRESIDENT            1981-11-17 00:00:00       5000                    10       7934 MILLER     CLERK           7782 1982-01-23 00:00:00       1300                    10 --//看来我多虑了是支持这样的写法的.

相关推荐