|

Oracle 读书笔记系列2

PL/SQL块

程序由三个块组成,即声明部分、执行部分、异常处理部分。

declare
/*声明部分
begin
/*执行部分
exception
/*异常处理
end;

PL/SQL块可以分三类
1. 无名块:动太构造,只能执行一次
2. 子程序:存储在数据库中的存储过程、函数及包等。
3. 触发器:当数据库发生操作时,会触发一些事件,从而自动执行相应的程序

固定链接 | 评论: 0 | 引用: 0 | 查看次数: 22

Oracle 读书笔记系列1

set autotrace traceonly explain 只显示执行计划
set timing on 显示执行时间
set autotrace on 显示执行计划

2. 在 where 语句中避免使用 <> 和 !=  因为这样查询索引用不起来,会直接进行全表查询

3. Where 语句中避免使用 IS NULL 和 IS NOT NULL 关键字
   因为 NULL 在数据库中代表的是“无”,就是什么都没有。 NULL 值不存储在索引中,因此索引列上 IS NULL 条件的查询不会使用索引,而是 Table Access Full 操作解析查询语句。  IS NOT NULL 同理。

4. EXISTS 关键字与 IN 关键字比较
  当子查询结果比较小时,用 IN 关键字比较合理, 当 外部表 比较小时比较合理 select * from 外部表  exists (内部表);


5. TRUNCATE 关键字 和 DeleteD 关键字
   truncate 关键字:通过释放存储表数据所用的数据块来删除数据,并且只在事务日志中记录块的释放。
结论:在整表数据删除的时候,使用TRUNCATER 效率要远远高于Delete.
   trancate 缺点 无法UNDO.无法数据恢复。

6.避免隐性转换,不然在查询语句中会使索引失效

7. 索引列上 >= 代替 >
   低率 :select * from emp where deptno>3
   高率: select * from emp where deptno>=4

8.避免在索引列上计算
   select * from emp where sal*12>1000 这样会全表查询。
   select * from emp where sal<1000/12 这样会查索引, 将计算项放在索引列的右边。

  
  

固定链接 | 评论: 0 | 引用: 0 | 查看次数: 30