今天聽DBA説如果從一個表批量查詢出一批數據之後批量插入另外一張表的優化方案:
1)不寫歸檔日誌;
2)採用獨佔
關於insert /*+ append */我們需要注意以下三點:
a、非歸檔模式下,只需append就能大量減少redo的產生;歸檔模式下,只有append+nologging才能大量減少redo。
b、insert /*+ append */時會對錶加鎖(排它鎖),會阻塞表上的除了select以外所有DML語句;
1 --不寫日誌設置 2 ALTER TABLE my_flosta_all_571 NOLOGGING; 3 4 insert /*+APPEND */ into my_flosta_all_571(OID,P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR) 5 select OID,to_date(‘20180103‘,‘yyyyMMdd‘) as P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR 6 from my_flosta_all_571 where p_day=to_date(‘20171231‘,‘yyyyMMdd‘); 7 commit; 8 9 insert /*+APPEND */ into my_flosta_all_571(OID,P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR)10 select OID,to_date(‘20180104‘,‘yyyyMMdd‘) as P_DAY,CITY,BUILDINGID,BUILDINGNAME,HASINDOOR11 from my_flosta_all_571 where p_day=to_date(‘20171231‘,‘yyyyMMdd‘);12 commit;
oracle批量插入優化方案
标签:log 今天 sele 插入 pen 需要 tab select day
小编还为您整理了以下内容,可能对您也有帮助:
在oracle怎样同时插入1000000条数据,效率要快
如果是数据导入,可以使用自导自带的导入工具imp 注意,根据你机器的性能,要调整commit的条数,就是多少条记录commit一次。这个数据对速度影响很大,插入之前最好能做个测试。希望对你有所帮助。
在oracle怎样同时插入1000000条数据,效率要快
如果是数据导入,可以使用自导自带的导入工具imp 注意,根据你机器的性能,要调整commit的条数,就是多少条记录commit一次。这个数据对速度影响很大,插入之前最好能做个测试。希望对你有所帮助。
Oracle 批量插入数据怎么做
Oracle批量插入数据可用PL/SQL的命令窗口执行。
使用工具:PL/SQL
步骤:
1、登录PL/SQL到指定数据库。
2、登录后,点击左上方“纸片”状图标,然后选择“Command Window”选项,进入命令窗口。
3、然后在本地电脑编写insert(即插入语句),每句以逗号分隔。如图:
4、然后为文件起名字,以.sql为文件后缀,如“执行.sql”,保存到指定路径,如c盘data目录下。
5、在打开的命令窗口下执行如下语句:@c:data执行.sql
其中“@”为必写内容,“c:data”为sql文件保存路径,“执行.sql”为要执行的脚本文件名。
6、敲击回车键执行,执行后会有成功提示,如图:
7、最后去目标表查询数据,检验结果成功。其中如图的四条为新插入的数据。
oracle 大量数据insert操作怎么提高效率
一般实际使用过程中,很少用大批量的INSERT 操作的
INSERT操作会占用数据库的REDO空间,没插入一条会写一条回滚记录 ,所以很慢
如果是从一个数据库导入到另外一个数据库,可以用dmp文件来实现导入导出,
如果是从EXCEL里面导入到数据库里面
可以直接只用复制粘贴的方式来走
如果是从一张表转移到另外一张表,可以通过insert into 表1 select * from 表2 的方式