首页 > 数据库 > 数据库开发技术 > 通用SQL优化经典等价改写【四】——只取所需列
往期回顾:
-- 创建测试表 drop table t1 cascade constraints purge; drop table t2 cascade constraints purge; create table t1 as select * from dba_objects; create table t2 as select * from dba_objects where rownum<=10000; -- 更新数据,确保主键值 update t1 set object_id=rownum; update t2 set object_id=rownum; commit; -- 创建连接视图 create or replace view v_t1_join_t2 as select t2.object_id, t2.object_name, t1.object_type, t1.owner from t1, t2 where t1.object_id = t2.object_id; -- 创建主外键约束关系 alter table T1 add constraint pk_object_id primary key (OBJECT_ID); alter table T2 add constraint fk_objecdt_id foreign key (OBJECT_ID) references t1 (OBJECT_ID);
SQL> set autotrace traceonly SQL> set linesize 1000 SQL> select * from v_t1_join_t2; 执行计划如下: Plan hash value: 2959412835 --------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | --------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 7996 | 937K| 335 (1)| 00:00:05 | |* 1 | HASH JOIN | | 7996 | 937K| 335 (1)| 00:00:05 | | 2 | TABLE ACCESS FULL| T2 | 7996 | 616K| 27 (0)| 00:00:01 | | 3 | TABLE ACCESS FULL| T1 | 110K| 4406K| 307 (1)| 00:00:04 | ---------------------------------------------------------------------------
SQL> select object_id, object_name from v_t1_join_t2; 执行计划如下: Plan hash value: 1513984157 -------------------------------------------------------------------------- | Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time | -------------------------------------------------------------------------- | 0 | SELECT STATEMENT | | 7996 | 616K| 27 (0)| 00:00:01 | |* 1 | TABLE ACCESS FULL| T2 | 7996 | 616K| 27 (0)| 00:00:01 | --------------------------------------------------------------------------
create or replace view v_t1_join_t2 as select t2.object_id, t2.object_name, -- 来自T2表 t1.object_type, t1.owner -- 来自T1表 from t1, t2 where t1.object_id = t2.object_id;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/9091385/viewspace-3083089/ ,如需转载,请注明出处,否则将追究法律责任。