简单理解:global temporary table

简单动机:出于对运行速度的无法忍受,我将嵌套sql语句中关于group by的内容放入临时表,作为中间变量。
简单做法:第一次使用临时表,查看有事务级别和会话级别2种,我选会话级别的即可。
简单理解:一次DB连接就是一次会话,如果有N个用户连接DB,大家都可以来用这个临时表,即为“全局”;但是需要隔离各自的内容,互不干扰,所以是会话级别的;所谓“临时”,即会话结束后,系统帮助清空,很方便。表内内容应该是存在内存里面的。

CREATE OR REPLACE PROCEDURE P_WY_NE_ZTE_LAC_CI AS

BEGIN
/*ZTE 后台以 BSC,BTS,CELL 唯一标识小区,而LAC,CI是要配置数据关联过来的*/
--ON COMMIT DELETE ROWS 说明临时表是事务指定,每次提交后ORACLE将截断表(删除全部行)
--ON COMMIT PRESERVE ROWS 说明临时表是会话指定,当中断会话时ORACLE将截断表。
DELETE IBTS_BTS_NOW WHERE RECDATE = TRUNC(SYSDATE);
COMMIT;
INSERT INTO [b][color=red]IBTS_BTS_BSCCONFSETID_TEMP[/color][/b] SELECT BSC, MIN(CONFSETID) CONFSETID
FROM IBTS_BTS
WHERE RECDATE = TRUNC(SYSDATE)
GROUP BY BSC;
COMMIT;
INSERT /*APPEND*/
INTO IBTS_BTS_NOW
SELECT *
FROM IBTS_BTS
WHERE RECDATE = TRUNC(SYSDATE)
AND (BSC, CONFSETID) IN (SELECT * FROM IBTS_BTS_BSCCONFSETID_TEMP);
COMMIT;
DELETE IBTS_BTS_NOW WHERE RECDATE <= TRUNC(SYSDATE) - 30;
COMMIT;
END;

-- Create table
create global temporary table [color=red][b]IBTS_BTS_BSCCONFSETID_TEMP[/b][/color](
bsc NUMBER(10) not null,
confsetid NUMBER
)
on commit preserve rows;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值