1,重复性查询:
当你向oracle提供一个sql的时候,oracle会首先在相应的内存中查找这条语句,如果匹配到,就能直接返回结果,这样就能节省内存和提高数据访问效率。但是匹配sql语句需要注意以下几点:
(1)字符级的比较:sql语句和共享池中的语句必须完全相同才能匹配完整,尤其注意大小写和空格
(2)两个语句所指的对象必须完全相同,就是说sql语句共享是区分用户的,两个用户的公共对象才能共享sql
(3)sql语句中必须使用相同的名字的绑定变量
2,表名顺序对效率的影响:oracle是从右到左的顺序解析from字句中的表名
例如表A中有 1500条数据,B中有1条数据
低效率:select count(*) from B,A
高效率:select count(*) from A,B
3,三个以上的表连接查询,就需要选择交叉表作为基础表
低效率:select * from E,A,B
where E.x = xxx
and E.y = A.y
and E.z = B.z
高效率:select * from A,B,E
where E.x = xxx
and E.y = A.y
and E.z = B.z
4,where子句中的连接顺序:oracle采用自上而下的顺序解析where子句,所以表之间的连接一定写在其他的条件之前,
那些可以过滤掉最带数据量的条件要放在末尾
低效率:select xxx
from EMP e
where sal > 5000
and job = 'manager'
and 管理人数>20
高效率:select xxx
from EMP e
where 管理人数>20
and al > 5000
and job = 'manager'
5,select子句中避免使用*:实际上,oracle在解析的过程中,会将“*”依次转换成所有的列名
6,尽量减少访问数据库的次数
7,decode函数的使用能减少处理时间:decode(参数,匹配值1,返回值1,匹配值2,返回值2。。。默认值)
例:select type ,decode(blood_test_flag,'Y','Yes','N','No',null,'None','Invalid') from A;
使用实例:
低效率:
select count(*) ,sum(sal) from emp
where dept_no = 1
and ename like 'zj';
select count(*) ,sum(sal) from emp
where dept_no = 2
and ename like 'zj';
高效率:
select count(decode(dept_no,1,'x',null)) count_1,
count(decode(dept_no,2,'x',null)) count_2,
sum(decode(dept_no,1,sal,null)) sal_1,
sum(decode(dept_no,2,sal,null)) sal_2
from emp
where ename like 'zj';
8,删除重复记录
最高效删除重复记录的方法(使用rowID)
delete from emp e
where e.rowid > (
select min(x.rowid)
from emp x
where x.emp_no = e.emp_no
);
9,update语句
低效率:update A set a = 1,b=2 where id = 01;
高效率:update A set (a ,b)=(1,2) where id = 01;
10,用exist代替IN
低效率:select * from emp
where empno > 0
and empno in (
select deptno
from dept
where loc = 'melg'
)
高效率:select * from emp
where empno > 0
and exists (
select 'x' from dept
where dept.deptno = emp.deptno
and loc = 'melg'
)
11,识别’低效率执行‘的sql语句
可以使用下面的sql语句查询出低效sql:
select executions ,disk_reads,buffer_gets,
round((buffer_gets-disk_reads)/buffer_gets,2) hit_radio.
round(disk_reads/executions,2)reads_per_run,
sql_text
from v$sqlarea
where executions>0
and buffer_gets>0
and (buffer_gets-disk_reads)/buffer_gets<0.8
group by 4 desc;
分享到:
相关推荐
Oracle 多表查询优化需要考虑多个方面,包括选择合适的表名顺序、使用 Cache Buffer、语句共享、优化查询路径、避免多表连接查询、优化数据统计、选择合适的索引、优化数据库结构、使用 Materialized View、优化...
Oracle 多表查询优化 Oracle 多表查询优化是指在 Oracle 数据库管理系统中,为了提高多表查询的效率和性能采取的一些优化策略和技术。在 Oracle 中,多表查询是指从多个表中检索数据的操作。这种操作可能会占用大量...
综上所述,Oracle数据库中大型表查询优化涉及多个方面,包括索引优化、查询设计、工具利用、分区技术和数据库配置。每个环节都需要根据具体情况进行细致分析和调整,以实现最佳的查询性能。在实际操作中,应结合实际...
例如,通过使用连接(JOIN)操作的优化,可以避免全表扫描,提高多表联查的效率。此外,子查询优化可能包括子查询消除、子查询合并或子查询物化,以减少查询的复杂性和提高执行速度。 优化器是Oracle处理SQL查询的...
- **索引统计信息更新**:定期更新索引统计信息可以帮助Oracle优化器更准确地评估查询成本。 ##### 2. 调整SQL语句结构 - **避免SELECT ***:明确指定需要查询的字段而不是使用`SELECT *`,以减少不必要的数据传输...
这是因为ORACLE只对简单的表提供高速缓冲(cache buffering) ,这个功能并不适用于多表连接查询..数据库管理员必须在init.ora中为这个区域设置合适的参数,当这个内存区域越大,就可以保留更多的语句,当然被共享的可能性...
### Oracle全表扫描的三种优化手段 在Oracle数据库管理中,全表扫描(Full Table Scan,简称FTS)是指查询语句对整个表的数据进行读取的一种操作方式。当索引选择性较差或者表较小的时候,Oracle可能会选择全表扫描...
### Oracle数据库的查询优化 #### 一、何时需要考虑查询优化 在开发应用程序时,编写高效、优化的SQL语句对于提升系统性能至关重要。当遇到以下情况时,应该重点考虑查询优化: - **表连接**: 当查询涉及到多张表...
Oracle查询优化是数据库管理中的重要环节,...总之,Oracle查询优化涉及到多方面的知识点和实际操作技巧。本文件通过介绍具体的优化技巧和案例分析,帮助读者理解并掌握这些技术,以提高Oracle数据库查询的效率和性能。
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
《Oracle查询优化改写技巧与案例》不讲具体语法,只是以案例的形式介绍各种查询语句的用法。第1~4章是基础部分,讲述了常用的各种基础语句,以及常见的错误和正确语句的写法。这部分的内容应熟练掌握,因为日常查询...
书中可能会讲解何时创建B树索引、位图索引、函数索引,以及如何利用复合索引来优化多列查询。同时,也可能会讨论索引的维护和优化,如重建索引、合并索引等。 3. **连接优化**:在处理多个表的联接查询时,优化JOIN...
本文重点分析Oracle数据库索引及临时表在查询中的应用,并探讨了基于索引使用SQL语句进行数据库效率优化的几种实现方法。 在Oracle数据库中,索引的合理运用能够显著提升查询速度,减少I/O操作,避免磁盘排序。通常...
总结,Oracle查询优化改写是一个涉及多方面技能的综合过程。理解数据库内部工作原理,结合实际业务场景,通过索引调整、查询改写、并行查询、临时表使用等手段,可以显著提升数据库性能。实践中,应持续监控和分析...
根据提供的文件信息,本文将对《Oracle查询优化改写技巧与案例》这一主题进行详细的解析,涵盖Oracle查询优化的基本概念、重要性、改写技巧及其实际应用案例。 ### 一、Oracle查询优化概述 #### 1.1 查询优化定义 ...
在本文中,我们将深入探讨 Oracle 中的查询优化技术,包括表的各种连接方式、子查询优化、窗口函数的应用、视图消除、并行执行技术等。 一、Oracle 中的查询优化技术 Oracle 中的查询优化技术可以分为以下几类: ...
最后,Oracle的并发控制机制,如锁定和多版本并发控制(MVCC),在处理并发查询时起着关键作用。了解并正确使用这些机制,可以避免死锁,减少锁竞争,提高系统并发性能。 “Oracle查询优化PDF”可能会详细讲解这些...
### Oracle9i的查询优化深度解析 #### 引言 Oracle9i的查询优化是数据库管理系统中的关键组件,它能够显著提升SQL查询的执行效率,从而优化整个数据库系统的性能。查询优化器通过智能分析和调整SQL语句的执行计划...