<强>【书评:甲骨文查询优化改写】第四章强>
博客文档结构图
一。1导读
各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~ O (∩_∩) O ~:
①检查的特殊用法
②sql优化中使用合并语句代替更新语句(重点)
<强>本文如有错误或不完善的地方请大家多多指正,ITPUB留言或QQ皆可,您的批评指正是我写作的最大动力。强>
一。2实验环境介绍
目标库:11.2.0.3 RHEL6.5
一。3前言
前3章的链接参考相关连接:
【书评:甲骨文查询优化改写】第一章http://blog.itpub.net/26736162/viewspace-1652985/<强> 强>
【书评:甲骨文查询优化改写】第二章http://blog.itpub.net/26736162/viewspace-1654252/<强> 强>
【书评:甲骨文查询优化改写】第三章http://blog.itpub.net/26736162/viewspace-1660422/<强> 强>
今天来写写这本书的第四章的内容,第四章主要讲了更新语句的正确用法,以及<强>什么时候更新语句应改写为合并>强,第四章的内容目录如下:
第4章插入,更新与删除
4.1插入新记录
4.2阻止对某几列插入
4.3复制表的定义及数据
4.4与检查选项用限制数据录入
4.5多表插入语句
4.6用其他表中的值更新
4.7合并记录
4.8删除违反参照完整性的记录
4.9删除名称重复的记录
一。4检查的特殊用法
我们知道sysdate不能用于检查约束,但是有这种需求的时候怎么办呢?如下例子利用视图加与检查选项即可解决。
09:39:08完成;创建表到达目标时间(create_date date 检查(create_date比;sysdate));
创建表到达目标时间(create_date date 检查(create_date比;sysdate)
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
误差在1号线:
ora - 02436:日期或系统变量错误检查约束中指定
09:41:56完成;插入(选择empno, ename hiredate斯科特。emp hiredate & lt;=sysdate检查选项)
09:42:13 ,2,值(9999年,“测试”,sysdate + 1);
插入(选择empno、ename hiredate斯科特。emp hiredate & lt;=sysdate检查选项)
,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
误差在1号线:
ora - 01402:视图与检查选项where子句违反
运行:00:00:00.12
09:42:14完成;插入(选择empno, ename hiredate斯科特。emp hiredate & lt;=sysdate检查选项)
09:42:56 ,2,值(9999年,“测试”,sysdate-1);
1行创建。
运行:00:00:00.03
09:42:57完成;
一。5合并语句
关于更新的一个容易出错的地方就是不写在子句,这样的话会更新掉全表的数据,<强>一个技巧就是把中设置的值复制到哪里子句中即可。强>
另外,建议大家在做多表关联更新的时候修改为合并语句,因为并入语句只访问了一次表:
[oracle@rhel6_lhr ~] sqlplus/美元sysdba
SQL * +:释放11.2.0.3.0生产星期二2015年5月19日10:26:55
版权(c) 1982年,2011年,甲骨文又是;保留所有权利。
连接到:
数据库Oracle 11 g企业版发布11.2.0.3.0——64位生产
分区,自动存储管理、OLAP、数据挖掘
和真实的应用程序中测试选择
10:26:55完成;设置autot;
10:28:05完成;alter table。emp_bk添加dname varchar2(50)默认“无名”;
表已更改。
已用时间:,00:00:01.23
10:30:04完成;更新。emp_bk
10:30:09 ,2,,,,设置一个。dname=(选择b。从lhr.dept_bk b dname b.deptno=a.deptno和b。dname(“会计”、“研究”))
10:30:09 ,3,存在(选择1从lhr.dept_bk b b.deptno=a.deptno和b。dname(“会计”、“研究”))
10:30:09 ,4,,
已更新3行。
已用时间:,00:00:00.05
执行计划
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
计划散列值:3525057516
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
| Id | Operation ,,,,,,,,,| Name ,,| Rows 成本(% CPU) | | |字节Time ,,,|
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|,,0 |更新STATEMENT ,,|,,,,,,,,|,,,,4 |,,544 |,,,28日,(18)| 00:00:01 |
|,,1 |,UPDATE ,,,,,,,,,,,| EMP_BK |,,,,,,|,,,,,,null