oracle查询优化
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查询优化的更多相关文章
- oracle 查询优化改写
-----------书籍: oracle 查询优化改写-----------第1个“C###oracle”为登录数据库的用户名,第2个“oracleChange”为登录数据库的密码“oracleCh ...
- 《Oracle查询优化改写技巧与案例》学习笔记-------使用数字篇
一个系列的读书笔记,读的书是有教无类和落落两位老师编写的<Oracle查询优化改写技巧与案例>. 用这个系列的读书笔记来督促自己学习Oracle,同时,对于其中一些内容,希望大家看到以后, ...
- Oracle 查询优化的基本准则详解
注:报文来源:想跌破记忆寻找你 < Oracle 查询优化的基本准则详解 > Oracle 查询优化的基本准则详解 1:在进行多表关联时,多用 Where 语句把单个表的结果集最小化, ...
- 【书评:Oracle查询优化改写】第14章 结尾章
[书评:Oracle查询优化改写]第14章 结尾章 一.1 相关参考文章链接 前13章的链接参考相关连接: [书评:Oracle查询优化改写]第一章 http://blog.itpub.net/26 ...
- 【书评:Oracle查询优化改写】第五至十三章
[书评:Oracle查询优化改写]第五至十三章 一.1 BLOG文档结构图 一.2 前言部分 一.2.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知 ...
- 【书评:Oracle查询优化改写】第四章
[书评:Oracle查询优化改写]第四章 BLOG文档结构图 一.1 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① check的 ...
- 【书评:Oracle查询优化改写】第三章
[书评:Oracle查询优化改写]第三章 BLOG文档结构图 导读 各位技术爱好者,看完本文后,你可以掌握如下的技能,也可以学到一些其它你所不知道的知识,~O(∩_∩)O~: ① 隐含参数 ...
- 【书评:Oracle查询优化改写】第二章
[书评:Oracle查询优化改写]第二章 BLOG文档结构图 在上一篇中http://blog.itpub.net/26736162/viewspace-1652985/,我们主要分析了一些单表查询的 ...
- Mssql迁移至Oracle 查询优化
针对Oracle的查询优化 a.避免使用nclob类型字段,可以通过排除此类型的字段,优化查询b.避免对字段进行NULL值判断,如:SELECT * FROM TABLE WHERE COL IS ...
随机推荐
- 单片机C语言中标志位的经典应用
/* 本例程是C语言的位域操作示例 这里为什么位域结构体与联合体一起使用? -->因为这样定义后,即可以单独使用标志位 也可同时使用整个字节数据 主要应用:单片机C语言 好处:用标志位可以节省R ...
- ant学习(1)
路径:/home/framework_Study/springinAction/webRoot/WEB-INF <?xml version="1.0" encoding=&q ...
- .net简单页面后台绑定下拉框,按钮,分页 后台cs文件
二.cs文件 using System;using System.Collections.Generic;using System.Web.UI;using System.Web.UI.WebCont ...
- html5响应式布局
1.media控制布局 <link type="text/css" rel="stylesheet" href="css04.css" ...
- 定义block块
一: 工程图 二: 代码区 AppDelegate.h #import <UIKit/UIKit.h> @interface AppDelegate : UIResponder <U ...
- KMP算法———模板
做出KMP字符串匹配算法心情也是好好哒,萌萌哒. 感谢黄学长,感谢栋栋! #include<cstdio>#include<string>#include<iostrea ...
- C++中使用stringstream简化类型转换
C++标准库中的<sstream>提供了一个stringstream,以前基本没用过,突然发现很好用(^-^)V 参见 http://www.cplusplus.com/reference ...
- Sql server统计查询语句消耗时间
1. set statistics time on go xxxx go set statistics time off 2. DECLARE @begin dateTime DECLARE @en ...
- 【JAVA编码专题】总结
第一部分:编码基础 为什么需要编码:用计算机看得懂的语言(二进制数)表示各种各样的字符. 一.基本概念 ASCII.Unicode.big5.GBK等为字符集,它们只定义了这个字符集内有哪些字符,以及 ...
- Java 执行终端命令实现,调用执行另外一个Java文件
Test.java package com.journaldev.files; public class Test { public static void main(String[] args) { ...