Oracle SQL的优化的规则描述

数据库 Oracle
以下的文章主要阐述的是Oracle SQL的优化规则,如果你对其很感兴趣的话,你不妨浏览下面的文章,希望你能从中获得自己想要的东西。

Oracle SQL的优化的规则中我们***少用IN操作符,因为一般的IN操作符都是可以用EXISTS来代替,我们都知道用IN写出的SQL的话,它的优点就是比较容易写及清晰易懂,但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:

ORACLE 试图将其转换成多个表的连接,如果转换不成功则先执行IN里面的子查询,再查询外层的表记录,如果转换成功则直接采用多个表的连接方式查询。由此可见用 IN的SQL至少多了一个转换的过程。一般的Oracle SQL都可以转换成功,但对于含有分组统计等方面的SQL就不能转换了。

Oracle在执行IN子查询时,首先执行子查询,将查询结果放入临时表再执行主查询。而EXIST则是首先检查主查询,然后运行子查询直到找到***个匹配项。NOT EXISTS比NOT IN效率稍高。但具体在选择IN或EXIST操作时,要根据主子表数据量大小来具体考虑。

推荐方案:在业务密集的Oracle SQL当中尽量不采用IN操作符。

不用NOT IN操作符,可以用NOT EXISTS或者外连接+替代 此操作是强列推荐不使用的,因为它不能应用表的索引。

推荐方案:用NOT EXISTS 或(外连接+判断为空)方案代替

不用“<>”或者“!=”操作符。对不等于操作符的处理会造成全表扫描,可以用“<” or “>”代替

不等于操作符是永远不会用到索引的,因此对它的处理只会产生全表扫描。

推荐方案:用其它相同功能的操作运算代替,如:

 1)a<>0 改为 a>0 or a<0

2)a<>’’ 改为 a>’’

Where子句中出现IS NULL或者IS NOT NULL时,Oracle会停止使用索引而执行全表扫描。可以考虑在设计表时,对索引列设置为NOT NULL。这样就可以用其他操作来取代判断NULL的操作
IS NULL 或IS NOT NULL操作(判断字段是否为空) 判断字段是否为空一般是不会应用索引的,因为B树索引是不索引空值的。

【编辑推荐】

  1. 对Oracle数据库设计中字段的正确使用方案
  2. 访问 Oracle 数据库的实例描述
  3. Oracle数据库的密集型实际应用程序的开发
  4. 提高 Oracle JDBC的性能的办法
  5. 浅谈Oracle函数返回Table集合
责任编辑:佚名 来源: 博客园
相关推荐

2010-04-15 16:36:13

Oracle SQL

2010-04-13 16:08:24

Oracle数据插入

2010-04-09 10:32:03

Oracle 数据库

2010-04-12 17:30:44

Oracle SQL调

2010-04-20 15:58:15

Oracle 语句

2010-04-09 10:43:34

Oracle SQL

2010-04-13 15:04:16

Oracle优化

2009-11-09 17:27:38

Oracle编码SQL

2010-07-06 09:20:30

SQL Server查

2010-07-05 18:02:37

SQL Server数

2010-04-12 12:55:24

Oracle 安装经验

2009-03-04 09:06:56

优化sqlOracle

2009-11-16 16:59:24

Oracle优化库高速

2010-07-06 08:36:55

SQL Server实

2010-04-08 13:26:39

Oracle安装

2010-04-06 16:12:25

Oracle约束

2010-05-07 18:14:08

Oracle性能调整

2010-04-27 15:59:26

Oracle to_c

2018-01-09 16:56:32

数据库OracleSQL优化

2010-04-08 17:17:03

Oracle to_c
点赞
收藏

51CTO技术栈公众号