oracle單條sql與plsql rowid插入記錄小記
SQL> create table t_rowid as select * from dba_objects;
表已建立。
SQL> commit;
提交完成。
SQL> insert into t_rowid select * from t_rowid;
已建立3193984行。
SQL> commit;
提交完成。
SQL> select count(*) from t_rowid;
COUNT(*)
----------
6387968
SQL> lock table t_rowid in exclusive mode;
表已鎖定。
SQL> create table t_rowid_test1 as select * from t_rowid where 1=2;
表已建立。
SQL> set autot on
SQL> set time on
21:14:21 SQL> set timing on
21:14:23 SQL> insert into t_rowid_test1 select * from t_rowid;
已建立6387968行。
已用時間: 00: 01: 28.43
執行計劃
----------------------------------------------------------
Plan hash value: 3629422811
-----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
-----------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 6064K| 1023M| 19841 (3)| 00:03:59 |
| 1 | TABLE ACCESS FULL| T_ROWID | 6064K| 1023M| 19841 (3)| 00:03:59 |
-----------------------------------------------------------------------------
Note
-----
- dynamic sampling used for this statement
統計資訊
----------------------------------------------------------
12379 recursive calls
768531 db block gets
265590 consistent gets
86817 physical reads
713761248 redo size
673 bytes sent via SQL*Net to client
580 bytes received via SQL*Net from client
3 SQL*Net roundtrips to/from client
258 sorts (memory)
0 sorts (disk)
6387968 rows processed
21:16:40 SQL> commit;
提交完成。
已用時間: 00: 00: 00.00
21:19:49 SQL> create table t_rowid_test2 as select * from t_rowid where 1=2;
表已建立。
1 begin
2 for x in (select rowid,a.* from t_rowid a) loop
3 insert into t_rowid_test2 select * from t_rowid where rowid=x.rowid;
4 end loop;
5* end;
21:24:13 SQL> /
PL/SQL 過程已成功完成。
已用時間: 00: 04: 03.17
小結:能用單條sql就用單條sql,plsql效能還是要差很多
但透過rowid定位記錄來遷移資料也是一種方法
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/9240380/viewspace-749410/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄更新和插入的限制SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-記錄比較-將記錄插入到表中SQL
- SQL 獲取插入後的最新一條記錄ID號SQL
- MySQL:使用INSERT 插入多條記錄MySql
- oracle實驗記錄 (dbms_rowid使用)Oracle
- PLSQL Language Referenc-PL/SQL集合和記錄-使用記錄更新行SQL
- sql取前幾條記錄SQL
- oracle plsql case when_end case小記OracleSQL
- plsql記錄型別SQL型別
- 從rowid操作相同記錄
- Oracle陣列使用以及PLSQL操作記錄Oracle陣列SQL
- mysql 存在該記錄則更新,不存在則插入記錄的sqlMySql
- Oracle存在修改,不存在插入記錄Oracle
- oracle快速向表中插入記錄方法Oracle
- oracle rownum分頁與顯示記錄小測Oracle
- [Q]怎麼實現一條記錄根據條件多表插入 zt
- PLSQL Language Referenc-PL/SQL集合和記錄-多維集合SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-巢狀表SQL巢狀
- PLSQL Language Referenc-PL/SQL集合和記錄-集合型別SQL型別
- SQL 單表多條記錄分組查詢分頁程式碼SQL
- db2不記錄日誌插入記錄DB2
- SQL 分組排序取最新一條記錄SQL排序
- sql注入學習簡單記錄SQL
- SQL中的單記錄函式SQL函式
- PLSQL Language Referenc-PL/SQL集合和記錄-集合構造器SQL
- PLSQL Language Referenc-PL/SQL集合和記錄-關聯陣列SQL陣列
- sql刪除重複記錄只保留一條SQL
- 判斷符合條件記錄是否存在SQL若干SQL
- Oracle 查詢重複記錄,以及簡單的sql應用。OracleSQL
- mysql怎麼插入空記錄MySql
- SQL INSERT INTO 語句詳解:插入新記錄、多行插入和自增欄位SQL
- oracle實驗記錄 (SQL*PLUS 命令操作)OracleSQL
- 為什麼刪除記錄表檔案不會減小?(記錄的插入與刪除在磁碟上的變化)
- oracle遊標簡單使用小記Oracle
- JavaScript 小記錄JavaScript
- SQL 如何返回最大值所在的多條記錄SQL
- oracle表空間管理(簡單記錄)Oracle
- MySQL 當記錄不存在時插入,當記錄存在時更新MySql