big_table的若干种创建脚本

引用TOM大师《性能优化》

创建普通Big_Table:

根据ALL_OBJECTS创建一个空表。
置Big_Table为NOLOGGING。
用ALL_OBJECTS的内容填充表。
对Big_Table创建一个主键约束。
收集统计结果。
显示表中的行数。
脚本Big_Table.SQL如下:

CREATE TABLE Big_Table   
AS
SELECT ROWNUM ID,   
         ao.*   
    FROM All_Objects ao   
   WHERE 1 = 0;   

ALTER TABLE Big_Table NOLOGGING;   

DECLARE
l_Cnt NUMBER;   
l_Rows NUMBER := ?   
BEGIN
INSERT /*+ APPEND */   
    INTO Big_Table   
SELECT ROWNUM,   
         ao.*   
    FROM All_Objects ao;   
       
l_Cnt := SQL%ROWCOUNT;   
     
COMMIT;   
     
WHILE(l_Cnt < l_Rows)   
LOOP   
    INSERT /*+ APPEND */   
      INTO Big_Table   
    SELECT ROWNUM + l_Cnt,   
           ao.*   
      FROM All_Objects ao   
     WHERE ROWNUM <= l_Rows - l_Cnt;   
        
    l_Cnt := l_Cnt + SQL%ROWCOUNT;   
       
    COMMIT;       
END LOOP;   
END;   
/   

ALTER TABLE Big_Table ADD CONSTRAINT Big_Table_PK PRIMARY KEY(ID);   

BEGIN
DBMS_STATS.GATHER_TABLE_STATS(OwnName    => User,   
                                TabName    => 'BIG_TABLE',   
                                Method_Opt => 'for all indexed columns',   
                                CASCADE    => TRUE);   
END;   
/   


SELECT COUNT(*)
FROM Big_Table;

eg:创建一个1000000条记录的表:

view plaincopy to clipboardprint?
MUZIYU@MYDB> @D:\SQL\Big_Table.SQL;   

表已创建。   


表已更改。   

输入 1 的值: 1000000   
原值    3:   l_Rows NUMBER := ?   
新值    3:   l_Rows NUMBER := 1000000;   

PL/SQL 过程已成功完成。   


表已更改。   


PL/SQL 过程已成功完成。   


COUNT(*)   
----------   
1000000

 

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

转载于:http://blog.itpub.net/23567090/viewspace-677067/

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值