Oracle语句优化1

优化就是选择最有效的方法来执行SQL语句。Oracle优化器选择它认为最有效的  
  方法来执行SQL语句。  
   
  1. IS   NULL和IS   NOT   NULL  
  如果某列存在NULL值,即使对该列建立索引也不会提高性能。  
  2. 为不同的工作编写不同的SQL语句块。  
  为完成不同的工作编写一大块SQL程序不是好方法。它往往导致每个任务的结果不优  
  化。若要SQL完成不同的工作,一般应编写不同的语句块比编写一个要好。  
  3. IN   和EXISTS  
  Select   name   from   employee   where   name   not   in   (select   name   from   student);  
  Select   name   from   employee   where   not   exists   (select   name   from   student);  
  第一句SQL语句的执行效率不如第二句。  
  通过使用EXISTS,Oracle会首先检查主查询,然后运行子查询直到它找到第一个匹配  
  项,这就节省了时间。Oracle在执行IN子查询时,首先执行子查询,并将获得的结果  
  列表存放在一个加了索引的临时表中。在执行子查询之前,系统先将主查询挂起,待  
  子查询执行完毕,存放在临时表中以后再执行主查询。这也就是使用EXISTS比使用IN  
  通常查询速度快的原因。  
  4. NOT   运算符  
  Select   *   from   employee   where   salary<>1000;  
  Select   *   from   employee   where   salary<1000   or   salary>1000;  
  第一句SQL语句的执行效率不如第二句,因为第二句SQL语句可以使用索引。  
  5. Order   By   语句  
  Order   By   语句的执行效率很低,因为它要排序。应避免在Order   By   字句中使用表达式。  
  6. 列的连接  
  select   *   from   employee   where   name||department=’ZYZBIOINFO’;  
  select   *   from   employee   where   name=’ZYZ’   and   department=’BIOINFO’;  
  这两个查询,第二句比第一句会快,因为对于有连接运算符’||’的查询,Oracle优化器是不  
  会使用索引的。  
  7. 通配符‘%’当通配符出现在搜索词首时,Oracle优化器不使用索引。  
  Select   *   from   employee   where   name   like   ‘%Z%’;  
  Select   *   from   employee   where   name   like   ‘Z%’;  
  第二句的执行效率会比第一句快,但查询结果集可能会不同。  
  8. 应尽量避免混合类型的表达式。  
  假设字段studentno为VARCHAR2类型  
  有语句select   *   from   student   where   studentno>123;  
  则Oracle会有一个隐含的类型转换。隐含的类型转换可能会使Oracle优化器忽略索引。  
  这时应使用显式的类型转换select   *   from   student   where   studentno=to_char(123)。  
  9.DISTINCT  
        DISTINCT总是建立一个排序,所以查询速度也慢。

Oracle语句优化1的更多相关文章

  1. 53个Oracle语句优化规则详解(转)

    Oracle sql 性能优化调整  1. 选用适合的ORACLE优化器        ORACLE的优化器共有3种:a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE ...

  2. oracle 语句优化

    1. 选用适合的ORACLE优化器         ORACLE的优化器共有3种: a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可 ...

  3. Oracle语句优化规则(一)

    1. 选用适合的ORACLE优化器     ORACLE的优化器共有3种:    a. RULE (基于规则)   b. COST (基于成本) c. CHOOSE (选择性)     设置缺省的优化 ...

  4. Oracle语句优化规则(二)

    21.       用EXISTS替换DISTINCT 当提交一个包含一对多表信息(比如部门表和雇员表)的查询时,避免在SELECT子句中使用DISTINCT. 一般可以考虑用EXIST替换  例如: ...

  5. oracle语句优化

    摘录来自https://blog.csdn.net/sap_jack/article/details/3766703 1.选用适合的Oracle优化器 Oracle的优化器共有3种: a.RULE(基 ...

  6. Oracle语句优化之一

    public List<TdDepartment> createZtreeDep(String compId) { List<TdDepartment> dd = new Ar ...

  7. oracle学习 十 数据库的语句优化(持续更)

    平时关注Oracle数据库的网友都知道,Oracle性能优化保证了Oracle数据库的健壮性.下面就此提出需要注意的两个原则.   原则一:注意WHERE子句中的连接顺序: ORACLE采用自下而上的 ...

  8. oracle之sql语句优化

    oracle之sql语句优化 sql语句的优化 1.在where子句中使用 is null 或 is not null 时,oracle优化器就不能使用索引了. 2.对于有连接的列,即使最有一个是静态 ...

  9. Oracle SQL语句优化34条

    非常好用的SQL语句优化34条 1)选择最有效率的表名顺序(只在基于规则的优化器中有效): ORACLE 的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表 dri ...

随机推荐

  1. linux 文件查看目录的数

    ls -l | grep '^-'| wc -l ls -l | grep -c '^-' ls -l 输出文件夹中的文件信息的一长串(注意,文件,不同于文件,它可能是一个文件夹.联系.设备文件) g ...

  2. 十大经典数据挖掘算法(9) 朴素贝叶斯分类器 Naive Bayes

    贝叶斯分类器 贝叶斯分类分类原则是一个对象的通过先验概率.贝叶斯后验概率公式后计算,也就是说,该对象属于一类的概率.选择具有最大后验概率的类作为对象的类属.现在更多的研究贝叶斯分类器,有四个,每间:N ...

  3. [Django] Base class in the model layer

    In the model layer, the Model class is the base class while the ModelBase class is metaclass.

  4. HDU 1885 Key Task 国家压缩+搜索

    点击打开链接 Key Task Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) ...

  5. WebService 用户名密码验证

    原文:WebService 用户名密码验证 在项目开发的过程中,WebService是经常要用的,当调用WebService方法时,需要经过服务的验证才可以调用,一般就是用户名/密码验证,还有一个就是 ...

  6. android登陆接口调试

    最近项目要开始调API,于是自己写了个关于登陆界面调试的Demo,为了保护项目,接口文档里面的内容都是被我改过的,不涉及任何项目内容.当然,代码在运行成功后,上传至博客前,相应内容我也根据改过后的文档 ...

  7. Oracle 11G DataGuard生产环境又一次启动具体过程

     场景,重新启动数据库,不重新启动linux系统,所以不用考虑监听程序,#linux输入lsnrctl start1 数据库关闭1.1 关闭主库SHUTDOWN IMMEDIATE; SQL> ...

  8. 读书时间《JavaScript高级程序设计》二:面向对象

    接着上次的进度,开始看第6章. 第6章 面向对象的程序设计 理解对象 创建自定义对象最简单的方式就是创建一个 Object 的实例,然后为它添加属性和方法. var person = new Obje ...

  9. Chapter 1 Securing Your Server and Network(8):停止未使用的服务

    原文:Chapter 1 Securing Your Server and Network(8):停止未使用的服务 原文出处:http://blog.csdn.net/dba_huangzj/arti ...

  10. Linux tcpdump命令具体解释

    简单介绍 用简单的话来定义tcpdump,就是:dump the traffic on a network,依据使用者的定义对网络上的数据包进行截获的包分析工具. tcpdump能够将网络中传送的数据 ...