创建一个含有9列的表,插入记录,运行EXPLAIN PLAN 得到执行计划,获得依次读取第一列到第九 列的cpu开销。
注意:初始读取数据的cpu开销为35757,以后依次递增20 。同时I/O开销不变,这是因为所有的数据基本存储在一个数据快里全部查询的物理读取的次数是一样的。
SQL> create table test (t1 number,t2 number,t3 number ,
2 t4 number,t5 number ,t6 number,
3 t7 number,t8 number ,t9 number);
表已创建。
SQL> insert into test values (1,2,3,4,5,6,7,8,9);
已创建 1 行。
SQL> explain plan set statement_id 't1' for select t1 from test;
已解释。
SQL> explain plan set statement_id 't2' for select t2 from test;
已解释。
SQL> explain plan set statement_id 't3' for select t3 from test;
已解释。
SQL> explain plan set statement_id 't4' for select t4 from test;
已解释。
SQL> explain plan set statement_id 't5' for select t5 from test;
已解释。
SQL> explain plan set statement_id 't6' for select t6 from test;
已解释。
SQL> explain plan set statement_id 't7' for select t7 from test;
已解释。
SQL> explain plan set statement_id 't8' for select t8 from test;
已解释。
SQL> explain plan set statement_id 't9' for select t9 from test;
已解释。
SQL> select statement_id,cpu_cost as total_cpu_cost,
2 cpu_cost-lag(cpu_cost) over (order by statement_id) as cpu_cost_1_coll,
3 io_cost
4 from plan_table
5 where id=0
6 order by statement_id;
STATEMENT_ID TOTAL_CPU_COST CPU_COST_1_COLL IO_COST
------------------------------ -------------- --------------- ----------
t1 7271 2
t2 7291 20 2
t3 7311 20 2
t4 7331 20 2
t5 7351 20 2
t6 7371 20 2
t7 7391 20 2
t8 7411 20 2
t9 7431 20 2
已选择9行。
得出 cpu_cost= column_postion*20