在速度上面大家都清楚直接加载插入数据确实比insert into快多了,但是如果在业务很麻烦的表这样做,估计会付出很大的性能甚至夯机的代价,
也许开发追求快,但是作为DB,要考虑在性能的基础上来追求卓越的速度
SQL> explain plan for insert /*+ append */ into t_app select * from t_app;
Explained.
SQL> select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3648959745
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 23616 | 3643K| 99 (2)| 00:00:02 |
| 1 | LOAD AS SELECT | T_APP | | | | |===>直接加载的对表的操作是LOAD AS SELECT
| 2 | TABLE ACCESS FULL| T_APP | 23616 | 3643K| 99 (2)| 00:00:02 |
----------------------------------------------------------------------------
SQL> explain plan for insert into t_noapp select * from t_noapp;
Explained.
SQL> select * from table(dbms_xplan.display());
Plan hash value: 3980433360
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 25301 | 3903K| 99 (2)| 00:00:02 |
| 1 | LOAD TABLE CONVENTIONAL | T_NOAPP | | | | |====>普通insert对表的操作:LOAD TABLE CONVERTIONAL
| 2 | TABLE ACCESS FULL | T_NOAPP
也许开发追求快,但是作为DB,要考虑在性能的基础上来追求卓越的速度
SQL> explain plan for insert /*+ append */ into t_app select * from t_app;
Explained.
SQL> select * from table(dbms_xplan.display());
PLAN_TABLE_OUTPUT
--------------------------------------------------------------------------------
Plan hash value: 3648959745
----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 23616 | 3643K| 99 (2)| 00:00:02 |
| 1 | LOAD AS SELECT | T_APP | | | | |===>直接加载的对表的操作是LOAD AS SELECT
| 2 | TABLE ACCESS FULL| T_APP | 23616 | 3643K| 99 (2)| 00:00:02 |
----------------------------------------------------------------------------
SQL> explain plan for insert into t_noapp select * from t_noapp;
Explained.
SQL> select * from table(dbms_xplan.display());
Plan hash value: 3980433360
------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
------------------------------------------------------------------------------------
| 0 | INSERT STATEMENT | | 25301 | 3903K| 99 (2)| 00:00:02 |
| 1 | LOAD TABLE CONVENTIONAL | T_NOAPP | | | | |====>普通insert对表的操作:LOAD TABLE CONVERTIONAL
| 2 | TABLE ACCESS FULL | T_NOAPP