`
Luob.
  • 浏览: 1592201 次
  • 来自: 上海
社区版块
存档分类
最新评论

Oracle SQL优化

阅读更多
ORACLE SQL 优化

1.访问 Table 的方式
  Oracle 采用两种访问表中记录的方式
  A 全表扫描
     就是按顺序的访问表中每一条记录 。oralce 采用一次读取多个数据库的方式优化全表扫描

  B: 通过ROWID访问表
     你可以采用基于ROWID的访问方式,提高访问标的效率,因为ROWID是包含表中记录的物理位置信息,Oralce采用索引Index实现了数据和存储数据的物理位置。


2.清空共享池
  alter system flush buffer_cache


3.选择最有效率的表名顺序(只在基于规则的优化器中有效)
   alter system set optimizer_model=RULE
ORALCE解析是从右边到左边的顺序处理 ,写在 oralce子句中最后的表是最先被处理。因此我们选记录条数最少的表作为基础表。


4.WHERE 子句中的连接顺序
  Oralce采用自上而下的顺序解析WHERE子句,因此我们要讲能够过滤掉最大记录的条件要放在WHERE子句的末尾


5. Select中子句的避免使用 “*”
ORACLE 在解析过程中会将* 依次转换成所有的列名,这个工作是通过数据库字典完成的。 
所以我们要将 “*” 转换成主键列(因为它一般都有索引)


6.记录条数的
   也尽量不要使用 “*”  应该使用主键列 (因为它一般都有索引)


7.用WHERE子句替换Having
 避免使用 having 子句,having只会在检索出所有记录结果后才对结果进行过滤,这个处理需要排序,统计等操作。如果能通过where子句限制记录数目,就使用where


8.使用表的别名 Alias
当SQL语句中连接多个表时,请使用个表的别名,兵把表的别名用户每个Column上,这样可以避免多个表中同名列发送的歧义和语法错误。


9.使用extists/not exists  代替 in/not in
1.设置基于成本的优化器
 alter system set optimizer_mode=ALL_ROWS   效率差不多

2.基于规则的优化器
 alter system set optimizer_mode=RULE   

效率高
select * from  ids_emp e where exists/not exists  (select * from ids_dept d where e.deptno=d.deptno and loc='a') 

select * from ids_emp where deptno in/not in (select deptno from ids_depts where loc='a')


9.使用表连接替换exists和not exists
select * from ids_emp e,ids_detp d where e.deptno=d.deptno and d.loc='a'
替换
select * from ids_emp e where exists,not (select * from ids_depts where e.deptno=d.deptno and d.loc='a')


10,使用 exists 代替 DISTINCT
select distinct d.deptno,d.dname from ids_emp e,ids_deptno d where e.deptno=d.deptno

select d.deptno,d.dname from ids_deptno d where exists (select * from ids_emp e where e.deptno=d.deptno);


11.常量的计算在语句被优化时候一次性完成。
select * from emp where sal > 2400/12
select * from emp where sal > 1200
sleect * from emp where sal *1 2 > 2400 (sal不会使用索引没有办法优化)


12,in or 子句常会使用个工作表,是索引失效
如果不产生大量重复值,可以考虑把子句拆开,拆开的子句应该包含索引。


13.消除大型表数据的顺序存取
多层嵌套查询
笛卡尔集: select * from ids_emp e where e.deptno In (select deptno from deptno where dname='销售部')应该在 deptno 上建立索引

1.select * from ids_emp where (deptno=10 and dept=20) or empno=300;
这个还是使用的是 顺序检索
应该使用下面sql
select * from ids_emp where deptno=10 an deptno=20 union select * from ids_emp where empno=300


14 避免相关子查询: 一个列的标签同时在主查询和WHERE子句中的查询中出现,那么很可能当主查询中的列值改变之后,子查询必须重新查询一次。查询嵌套层次越多,效率越低,因此应当尽量避免子查询。如果子查询不可避免,那么要在子查询中过滤掉尽可能多的行。
0
1
分享到:
评论
2 楼 一剑飘红007 2013-03-08  
学习了
1 楼 jiangwenxian 2013-03-06  
学习了,

相关推荐

    oracle SQL优化技巧

    Oracle SQL 优化技巧 Oracle SQL 优化是提高数据库性能的关键技巧之一。以下是 Oracle SQL 优化的 12 个技巧: 1. 选择最有效率的表名顺序 在基于规则的优化器中,Oracle 的解析器按照从右到左的顺序处理 FROM ...

    oracle sql优化

    在Oracle数据库环境中,SQL优化是提升系统性能的关键环节。它涉及到如何有效地检索数据,减少查询时间,减轻数据库服务器的负载,以及改善整体系统的响应速度。本文将深入探讨Oracle SQL优化的相关知识点,帮助你...

    Oracle SQL优化文档

    Oracle SQL优化文档提供了对Oracle数据库进行SQL语句优化的一系列方法和工具,旨在帮助数据库管理员和开发人员提高SQL查询性能和数据库效率。文档内容涵盖了从基本的SQL优化思路到具体的分析工具,详细介绍了如何...

    OracleSQL的优化.pdf

    Oracle SQL 优化 Oracle SQL 优化是数据库性能优化的关键部分。为了提高数据库的性能,我们需要从五个方面进行调整:去掉不必要的大型表的全表扫描、缓存小型表的全表扫描、检验优化索引的使用、检验优化的连接技术...

    oracle sql优化100条

    ### Oracle SQL优化100条概览 在Oracle数据库管理与优化领域,SQL查询的效率直接关系到系统性能和用户体验。以下将详细解读部分Oracle SQL优化原则,涵盖查询执行计划、表扫描方式、SQL语句优化及数据访问顺序等...

    Oracle SQL 优化与调优技术详解-附录:SQL提示

    在Oracle数据库中,SQL优化是一个至关重要的环节,它能够显著提高数据库查询的效率和性能。本文将详细介绍Oracle SQL中的“提示”(HINT)技术,这是Oracle SQL优化中使用的一项辅助手段,通过为查询提供额外的优化...

    oracle sql优化实战案例

    主要讲述oracle sql 的开发以及优化,对低效率的sql的优化方法和诊断技巧

    ORACLE SQL优化工具sqlhc

    Oracle SQL优化是数据库管理中的关键任务,用于提升查询性能,减少资源消耗,进而改善整体系统效率。`SQLHC`(SQL Health Check)是Oracle提供的一种实用工具,它可以帮助DBA(数据库管理员)诊断和优化SQL语句。在...

    落落 Oracle SQL优化与改写培训教程

    大量优化实战方法:将主要SQL优化点一一剖析,分享大量SQL优化的实际工作经验 50余改写调优案例:覆盖大多数DBA日常工作场景,具有相当大的实用价值 技巧+案例:可以作为DBA的参考手册,也可以作为开发人员编写SQL...

    Oracle sql优化.pdf

    Oracle SQL 优化 Oracle SQL 优化是指通过调整和优化 SQL 语句、数据库服务器设置和应用程序配置来提高数据库性能的过程。该过程涉及到多个方面,包括 SQL 语句优化、索引优化、数据库服务器配置优化、应用程序...

    ORACLE SQL 优化 存储过程 PROCEDURE

    ORACLE SQL 优化存储过程 PROCEDURE ORACLE SQL 优化存储过程 PROCEDURE 是一篇结合实际开发经验和理论知识的文章,旨在帮助开发者提高 SQL 开发效率和优化存储过程。文章涵盖了广泛的知识点,从基本的 SQL 语句到...

    Oracle SQL优化法则

    Oracle SQL优化是数据库管理的关键环节,它涉及到提升SQL语句执行效率,降低资源消耗,从而提高整体系统性能。以下是对Oracle SQL优化53个规则的详细解读,主要围绕选择优化器、访问表的方式、共享SQL语句这三大方面...

    oracle sql优化语句

    Oracle SQL 优化是数据库管理...总的来说,Oracle SQL优化涉及到对数据库行为的深入理解,包括优化器的工作原理、索引的使用策略以及执行计划的选择。通过恰当的配置和调优,可以大大提高数据库系统的性能和响应速度。

    oracle sql优化分享案例

    oracle sql案例的分享ppt,具体调优和改写sql的例子

    Oracle sql 优化实例

    不错的东东,通俗易懂,建议学习.赶紧下载吧

    oraclesql优化_Oracle中优化SQL的原则.pdf

    oraclesql优化_Oracle中优化SQL的原则.pdf

    大牛出手Oracle SQL优化实例讲解

    10.基于基本的优化CBO 11.如何统计数据库数据 12.Oracle如何统计操作系统数据 13./*+parallel(t,4)*/在大表查询性能的提现 14.CRAS和create insert的性能测试 15.增加字段时指定default值和先增加再update哪个性能好...

    OracleSQL优化初步

    在Oracle数据库管理中,SQL优化是一项至关重要的任务,它直接影响到数据库系统的性能和效率。"Oracle SQL优化初步"这个主题涵盖了DBA们在日常工作中必须掌握的基础知识和技巧。SQL优化的目标是通过改进查询结构、...

    高清完整版 Oracle 高性能SQL引擎剖析SQL优化与调优机制详解

    Oracle的SQL优化与调优机制复杂多样,涵盖了从SQL语句的编写、执行计划的选择、到资源管理的全方位调优方法。为了深入理解Oracle SQL优化与调优机制,需要掌握以下几个核心知识点。 首先,要掌握Oracle SQL的基本...

    Oracle SQL优化的53个黄金法则

    Oracle SQL优化是数据库管理中的关键任务,以确保高效的数据检索和整体系统性能。本文将深入探讨53个黄金法则中的几个关键原则,帮助你优化Oracle SQL查询。 1. **选择合适的优化器**: - ORACLE提供三种优化器:...

Global site tag (gtag.js) - Google Analytics