Oracle SQL的优化规则:
[color=blue][b]尽量少用IN操作符,基本上所有的IN操作符都可以用EXISTS代替[/b][/color]
用IN写出来的SQL的优点是比较容易写及清晰易懂,但是用IN的SQL性能总是比较低的,从ORACLE执行的步骤来分析用IN的SQL与不用IN的SQL有以下区别:
ORACLE 试图将其转换成多个表的连接
原创
2023-02-06 17:07:51
434阅读
一、with介绍With查询语句不是以select开始的,而是以“WITH”关键字开头可认为在真正进行查询之前预先构造了一个临时表,之后便可多次使用它做进一步的分析和处理当查询中多次用到某一部分时,可以用Oracle with语句创建一个公共临时表。因为子查询在内存临时表中,避免了重复解析,所以执行效率会提高不少。临时表在一次查询结束自动清除。WITH Clause方法的优点增加了SQL的易读性,
转载
2021-04-27 19:55:39
845阅读
2评论
1 not exist 比 not in 效率高很多2 UNION ALL 比 UNION 效率高很多3 Select*,Order by,Group by,Distinct, UNION,MINUS,INTERSECT操作是相当耗时的,在View中能不使用就不要使用4 通常联接查询比子查询的...
转载
2012-06-14 09:26:00
50阅读
2评论
一、在通常查询中,我们可以使用替代变量查询。
SQL>SELECT * FROM dept WHERE deptno = &&t;
在查询时,输入条件变量值。无论我们查询哪样信息,它都只安排一个查询计划,这样就能有效的提高查询语句的执行效率,这也是Oracle建议我们使用的查询方式。
如果不使用替代变量,而是直接输入查询条件,如:
SQL>SELECT * FR
原创
2012-10-23 11:48:47
670阅读
1. 排序合理查询条件Oracle自下而上分析顺序WHERE收条,从优化性能的角度。它建议,这些条件将能够过滤掉大量行书写的WHERE在条款结束,之间的连接条件置于其它WHERE子句之前,即对易排查的条件先做推断处理。这样在过滤掉尽可能多的记录后再进行等值连接,能够提高检索效率。比如:SELECT ...
转载
2015-10-02 14:16:00
105阅读
2评论
1 not exist 比 not in 效率高很多2 UNION ALL 比 UNION 效率高很多3 Select*,Order by,Group by,Distinct, UNION,MINUS,INTERSECT操作是相当耗时的,在View中能不使用就不要使用4 通常联接查询比子查询的...
转载
2012-06-14 09:26:00
78阅读
2评论
(1) 选择最有效率的表名顺序(只在基于规则的优化器中有效):
ORACLE的解析器按照从右到左的顺序处理FROM子句中的表名,FROM子句中写在最后的表(基础表driving table)将被最先处理,在FROM子句中包含多个表的情况下,你必须选择记录条数最少的表作为基础表。如果有3个以上的表连接查询, 那就需要选择交叉表(intersection tab
转载
2010-11-09 20:32:33
404阅读
(转)SQL优化原则一、问题的提出 在应用系统开发初期。因为开发数据库数据比較少。对于查询SQL语句,复杂视图的的编写等体会不出SQL语句各种写法的性能优劣,可是假设将应用系统提交实际应用后,随着数据库中数据的添加。系统的响应速度就成为眼下系统须要解决的最基本的问题之中的一个。系统优化中一个非常重...
转载
2015-10-13 16:45:00
117阅读
2评论
1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引。2.应尽量避免在 where 子句中对字段进行 null 值判断,否则将导致引擎放弃使用索引而进行全表扫描,如: 1 select id from t where num is null 可以在num上设置默认值0,确保表中num列没有null值,然后这样查询: 1 select id fr
转载
2019-07-30 13:26:00
224阅读
2评论
整理一下网上所看到sql优化方法1、使用大写字母书写sql,因为oracle解释器会先将sql语句转换成大写后再解释2 减少访问数据库的次数,多数情况下一条sql可以达到目的的,就不要使用多条sql。当执行每条SQL语句时,ORACLE在内部执行了许多工作:解析SQL语句,估算索引的利用率,绑定变量,读数据块等等。由此可见,减少访问数据的次数,就能实际上减少ORACLE的工作量。例如:以下有
转载
2013-07-31 15:38:00
92阅读
2评论
Oracle在执行一个SQL之前,首先需要看一下SQL的执行计划,然后在按照执行计划执行SQL,分析执行计划的工作是由优化器来执行的,在不同的条件下,一个SQL可能存在多条执行计划,但是在某个特定的时间点,特定的环境下,一定只有一种执行计划是最优的。一、优化器的类型:oracle的优化方式有两种,一种是基于规则的RBO(Rule-BasedOptimization),一种是基于开销或者代价的CBO
转载
精选
2013-10-30 11:47:02
418阅读
点赞
Oracle数据库SQL语句查询优化
原创
2024-05-15 11:28:52
200阅读
select * from (select temp1.*, rownum temp2 --查询sql和条件 from (select * from emp t where 1 = 1) temp1 --结束行数=每页数量 * 当
原创
2021-09-13 11:36:17
943阅读
ORACLE有个高速缓冲的概念,这个高速缓冲就是存放执行过的SQL语句,那oracle在执行sql语句的时候要做很多工作,例如解析sql语句,估算索引利用率,绑定变量,读取数据块等等这些操作。假设高速缓冲里已经存储了执行过的sql语句,那就直接匹配执行了,少了步骤,自然就快了,但是经过测试会发现高速缓冲只对简单的表起作用,多表的情况完全没有效果,例如在查询单表的时候那叫一个快,但是假设连接多个表,
转载
2011-04-13 14:20:00
327阅读
2评论
一、SQL 语句转换 试探查询转换1、视图合并例子:简单视图合并优化前:create view test_view asselect ename,dname,salfrom emp e,dept dwhere e.deptno = d.deptno;select ename,dname fro...
转载
2012-06-14 10:22:00
62阅读
2评论
一、SQL 语句转换
<一> 试探查询转换
1、视图合并
例子:
简单视图合并
优化前:
create view test_view as
select ename,dname,sal
from emp e,dept d
where e.deptno = d.deptno;
select ename,dname from test_view where sal >
10
转载
2012-06-14 10:22:00
62阅读
2评论
1. WHERE子句中的连接顺序:Oracle采用自下而上的顺序解析WHERE子句,根据这个原理,表之间的连接必须写在其他WHERE条件之前, 那些可以过滤掉最大数量记录的条件必须写在WHERE子句的末尾. 2. SELECT子句中避免使用 ‘ *’:ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间 3. 使用DECOD
转载
2013-07-31 13:52:00
74阅读
2评论
书籍: oracle 查询优化改写 第1个“C###oracle”为登录数据库的用户名,第2个“oracleChange”为登录数据库的密码“oracleChange”为欲登录的数据库名称。 /*create tablespace oracleChangedatafile 'F:\devlopmen
原创
2021-07-19 11:41:47
212阅读
oracle SQL性能优化
我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为笔者学习、摘录、并汇总部分资料与大家分享!
(1) SELECT子句中避免使用 ‘ * ‘:
ORACLE在解析的过程中, 会将'*' 依次转换成所有的列名, 这个工作是通过查询数据字典完成的, 这意味着将耗费更多的时间
(4) 
转载
2009-07-06 09:01:26
349阅读
我经常看到一些人在问,有没有优化的书啊?当然,如果你是开发人员或者是应用人员,你所说的优化,如果我没理解错的话,应该是SQL语句的优化。其实对于这个问题,我想简答的说几句,所谓优化,以我的理解,分道和术两个层面:术:是实现方法道:是理论思想就好比武侠小说《笑傲江湖》中的华山派的剑宗、气宗之争。先来说术对于初学来说,可能对术更感兴趣,因为当你掌握了SQL语句的基本语法之后
原创
2013-07-31 10:20:01
714阅读
点赞