外键在索引中的用处(二)
来源:互联网 发布:linux系统u盘 编辑:程序博客网 时间:2024/05/23 12:54
在上一个问题:外键在索引中的用处(一)中,外键的消除表功能只能消掉一个,我们暂且理解为表中引用了非外键列之外的值,于是这次改为各表都只含一列,作实验如下:
SQL> DROP TABLE d;Table droppedSQL> DROP TABLE c;Table droppedSQL> DROP TABLE b;Table droppedSQL> DROP TABLE a;Table droppedSQL> create table a as select level as a1 from dual connect by level <=10;Table createdSQL> alter table a add constraint pk_a primary key(a1);Table alteredSQL> create table b as select a1 from a;Table createdSQL> alter table b add constraint pk_b primary key(a1);Table alteredSQL> alter table b add constraint fk_b foreign key(a1) references a(a1);Table alteredSQL> create table c as select a1 from a;Table createdSQL> alter table c add constraint pk_c primary key(a1);Table alteredSQL> alter table c add constraint fk_c foreign key(a1) references b(a1);Table alteredSQL> create table d as select a1 from a;Table createdSQL> alter table d add constraint pk_d primary key(a1);Table alteredSQL> alter table d add constraint fk_d foreign key(a1) references c(a1);Table alteredSQL> explain plan for select d.a1 FROM d INNER JOIN c ON c.a1 = d.a1 inner join b on b.a1 = c.a1 inner join a on a.a1 = b.a1;ExplainedSQL> select * from table(dbms_xplan.display);PLAN_TABLE_OUTPUT--------------------------------------------------------------------------------Plan hash value: 3346118423---------------------------------------------------------------------------| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |---------------------------------------------------------------------------| 0 | SELECT STATEMENT | | 10 | 260 | 1 (0)| 00:00:01 || 1 | NESTED LOOPS | | 10 | 260 | 1 (0)| 00:00:01 || 2 | INDEX FULL SCAN | PK_D | 10 | 130 | 1 (0)| 00:00:01 ||* 3 | INDEX UNIQUE SCAN| PK_B | 1 | 13 | 0 (0)| 00:00:01 |---------------------------------------------------------------------------Predicate Information (identified by operation id):--------------------------------------------------- 3 - access("B"."A1"="D"."A1")Note----- - dynamic sampling used for this statement (level=2)19 rows selectedSQL>
形成了一个更有意思的plan,这儿消掉了表C与表A,而条件也直接变为了 3 - access("B"."A1"="D"."A1")
- 外键在索引中的用处(二)
- 外键在索引中的用处(一)
- 环境变量(Path,ClassPath)在计算机中的用处。
- 浅谈 Quartz2D 在开发中的用处(三)
- 数学的用处(二)
- 浅谈 typename在网页处理中的用处
- 关于BooleanQuery在搜索中的用处
- Anchors设定在Delphi界面设计中的用处
- HttpWatch-在功能测试中的用处
- 关于BooleanQuery在搜索中的用处
- IOS-事务在数据库中的用处
- Oracle数据库中的索引(二)
- mongodb中的索引二
- Nonpaged Pool(非分页池) 和 Paged Pool(分页池) 在Windows中的用处
- Nonpaged Pool(非分页池) 和 Paged Pool(分页池) 在Windows中的用处
- 结构体中的 . (点号)用处!
- QQ空间的字体/unicode编码在字体中的用处
- 浅谈 Quartz2D 在开发中的用处 - 画图形
- 黑马程序员---面试题破解之一_交通灯管理系统
- hadoop面试题
- Android震动vibrator系统开发全过程
- 【wordpress】在本地搭建多个wordpress
- 分布式计算的基本原理
- 外键在索引中的用处(二)
- 不只是技术!成为IT经理必备的十大软技能
- Jquery监听组合按键
- Tomcat Cannot assign requested address: JVM_Bind 非端口占用冲突
- IOS中类的创建
- iOS7新JavaScriptCore框架入门介绍(一)
- java 判断xml中是否含有一个指定的节点
- 找工作专用贴
- JDOM