1. 排序合理查询条件

Oracle自下而上分析顺序WHERE收条,从优化性能的角度。它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束,

之间的连接条件置于其它WHERE子句之前,即对易排查的条件先做推断处理。这样在过滤掉尽可能多的记录后再进行等值连接,能够提高检索效率。

比如:

SELECT empno, ename, job, sal, dept.deptno, dname

FROM emp, dept

WHERE emp.deptno = dept.deptno AND emp.deptno = 20;

要比下述语句的查询效率高一些:

SELETE empno, ename, job, sal, dept.deptno, dname

FROM emp, dept

WHERE emp.deptno = 20 AND emp.deptno = dept.deptno;

2.连接中使用表别名

在进行连接查询时,建议在SQL语句中使用表的别名, 并把别名前缀与每一个字段上。

这样能够降低解析的时间,并可避免因字段名存在歧义(使用多个

表中出现的同名字段)而导致的语法错误。比例如以下述语句:

SELECT e.empno, e.ename, e.job, e.sal, e.deptno, d.name

FROM emp e, dept d

WHERE e.deptno = d.deptno AND e.deptno = 20;

3.用EXISTS替换DISTINCT

在进行一对多关系的表间连接查询时,假设要剔除结果中的反复行。能够考虑使用EXISTS(结合子查询)替换DISTINCT。

比如:

SELECT deptno, dname FROM dept d WHERE EXIST (SELECT 'y' FROM emp e WHERE e.deptno = d.deptno);

4.用WHERE替换HAVING

因为SELECT语句的运行顺序为:先WHERE子句, 在GROUP BY 子句。 然后SELECT查询。 再后HAVINT子句,最后是ORDER BY子句,因此在进行分组

查询时,假设过滤条件不涉及分组计算,则应该使用WHERE语句替换HAVING指定的过滤条件

比如:

SELECT deptno, avg(sal) FROM emp

WHERE deptno IN (10, 20)

GROUP BY deptno;

效率会高于以下

SELECT deptno, avg(sal) FROM emp

GROUP BY deptno

HAVING deptno IN (10, 20);

当然。 假设分组查询的过滤条件设计分组计算,就仅仅能在HAVING子句中指定了。

5.使用系统函数

系统函数毕其实数据库厂商“专业人士”解。相对更可靠

版权声明:本文博主原创文章。博客,未经同意不得转载。

oracle查询优化的更多相关文章

  1. oracle 查询优化改写

    -----------书籍: oracle 查询优化改写-----------第1个“C###oracle”为登录数据库的用户名,第2个“oracleChange”为登录数据库的密码“oracleCh ...

  2. 《Oracle查询优化改写技巧与案例》学习笔记-------使用数字篇

    一个系列的读书笔记,读的书是有教无类和落落两位老师编写的<Oracle查询优化改写技巧与案例>. 用这个系列的读书笔记来督促自己学习Oracle,同时,对于其中一些内容,希望大家看到以后, ...

  3. Oracle 查询优化的基本准则详解

      注:报文来源:想跌破记忆寻找你 < Oracle 查询优化的基本准则详解 > Oracle 查询优化的基本准则详解 1:在进行多表关联时,多用 Where 语句把单个表的结果集最小化, ...

  4. 【书评:Oracle查询优化改写】第14章 结尾章

    [书评:Oracle查询优化改写]第14章 结尾章 一.1  相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26 ...

  5. 【书评:Oracle查询优化改写】第五至十三章

    [书评:Oracle查询优化改写]第五至十三章 一.1  BLOG文档结构图 一.2  前言部分 一.2.1  导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知 ...

  6. 【书评:Oracle查询优化改写】第四章

    [书评:Oracle查询优化改写]第四章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① check的 ...

  7. 【书评:Oracle查询优化改写】第三章

    [书评:Oracle查询优化改写]第三章 BLOG文档结构图       导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 ...

  8. 【书评:Oracle查询优化改写】第二章

    [书评:Oracle查询优化改写]第二章 BLOG文档结构图 在上一篇中http://blog.itpub.net/26736162/viewspace-1652985/,我们主要分析了一些单表查询的 ...

  9. Mssql迁移至Oracle 查询优化

    针对Oracle的查询优化 a.避免使用nclob类型字段,可以通过排除此类型的字段,优化查询b.避免对字段进行NULL值判断,如:SELECT * FROM  TABLE WHERE COL IS ...

随机推荐

  1. Hacker(25)----病毒攻防之认识病毒

    Internet中,计算机病毒是威胁计算机安全的程序.对于计算机病毒,用户不仅需要掌握其基础知识,还要认识常见的病毒及简单病毒制作方法.无论病毒基础还是制作简单病毒,用户需要掌握防御病毒的有效措施和专 ...

  2. 查看Oracle当前用户下的信息(用户,表视图,索引,表空间,同义词,存储过程函数,约束条件)

    0.表空间 SQL>select username,default_tablespace from user_users; 查看当前用户的角色 SQL>select * from user ...

  3. Linq 关键字

    from var lowNums = from num in numbers            where num < 5            select num; numbers 是数 ...

  4. CaseFile

    出处 http://tools.kali.org/information-gathering/casefile CaseFile is the little brother to Maltego. I ...

  5. AngularJs练习Demo3

    @{ Layout = null; } <!DOCTYPE html> <html> <head> <meta name="viewport&quo ...

  6. textField:shouldChangeCharactersInRange:replacementString:

    http://blog.csdn.net/mamong/article/details/44964801

  7. SVN的初步使用方法

    1.需要公司提供SVN账号密码 2.cd 输入本地存储路径 3.输入服务器地址 --uesr= (账号名) --password=(账号密码) 4.本地路径会自动创建文件 5.经理会初始化项目 5.1 ...

  8. nyoj 最少步数

    算法:搜索(深度优先搜索) 描述 这有一个迷宫,有0~8行和0~8列: 1,1,1,1,1,1,1,1,1 1,0,0,1,0,0,1,0,1 1,0,0,1,1,0,0,0,1 1,0,1,0,1, ...

  9. 用C++写出hanoi

    汉诺塔(港台:河內塔)是根据一个传说形成的數學问题有三根杆子A,B,C.A杆上有N个(N>1)穿孔圆盘,盘的尺寸由下到上依次变小.要求按下列规则将所有圆盘移至C杆:-每次只能移动一个圆盘-大的盘 ...

  10. c#按键Up和Down对Textbox的内容加1减1

    private void textBox_proc1value_KeyDown(object sender, KeyEventArgs e) { Keys key = e.KeyCode; if (e ...