(1)SELECT子句中避免使用' * ':ORACLE在解析的过程中,会将' * '依次转换成所有的列名, 这个工作是通过查询数据字典完成的,这意味着将耗费更多的时间。

(2)sql语句用大写的:因为oracle总是先解析sql语句,把小写的字母转换成大写的再执行。另外,在java代码中尽量少用连接符“+”连接字符串!

(3)使用表的别名:当在SQL语句中连接多个表时, 请使用表的别名并把别名前缀于每个Column上。这样一来,就可以减少解析的时间并减少那些由Column歧义引起的语法错误。

(4) 用>=替代>

高效: SELECT * FROM  A WHERE DEPTNO >=4

低效: SELECT * FROM A WHERE DEPTNO >3

两者的区别在于, 前者DBMS将直接跳到第一个DEPT等于4的记录而后者将首先定位到DEPTNO=3的记录并且向前扫描到第一个DEPT大于3的记录。

(5) 用EXISTS替代IN、用NOT EXISTS替代NOT IN:在许多基于基础表的查询中,为了满足一个条件,往往需要对另一个表进行联接.在这种情况下, 使用EXISTS(或NOT EXISTS)通常将提高查询的效率。 在子查询中,NOT IN子句将执行一个内部的排序和合并。无论在哪种情况下,NOT IN都是最低效的 (因为它对子查询中的表执行了一个全表遍历)。 为了避免使用NOT IN ,我们可以把它改写成外连接或NOT EXISTS。例如:

(高效)SELECT * FROM A(基础表) WHERE EMPNO > 0 AND EXISTS (SELECT ‘X' FROM DEPT WHERE DEPT.DEPTNO = A.DEPTNO AND LOC = ‘MELB')

(低效)SELECT * FROM A(基础表) WHERE EMPNO > 0 AND DEPTNO IN(SELECT DEPTNO FROM DEPT WHERE LOC = ‘MELB')

(6)用EXISTS替换DISTINCT:例如:

低效: SELECT DISTINCT DEPT_NO,DEPT_NAME FROM DEPT D,A WHERE D.DEPT_NO = A.DEPT_NO

高效: SELECT DEPT_NO,DEPT_NAME FROM DEPT D WHERE EXISTS ( SELECT ‘X’ FROM A WHERE A.DEPT_NO = D.DEPT_NO);

(7)尽量用UNION-ALL 替换UNION

当SQL语句需要UNION两个查询结果集合时,这两个结果集合会以UNION-ALL的方式被合并, 然后在输出最终结果前进行排序。

低效:SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’

UNION SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’

高效: SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’

UNION ALL SELECT ACCT_NUM, BALANCE_AMT FROM DEBIT_TRANSACTIONS WHERE TRAN_DATE = ’31-DEC-95’

(7) 避免在索引列上使用NOT:通常,当Oracle”遇到”NOT,就会停止使用索引转而执行全表扫描。

(8)用索引提高效率:索引是表的一个概念部分,用来提高检索数据的效率,ORACLE使用了一个复杂的自平衡B-tree结构。 通常,通过索引查询数据比全表扫描要快。当Oracle找出执行查询和Update语句的最佳路径时,Oracle优化器将使用索引。同样在联结多个表时使用索引也可以提高效率. 另一个使用索引的好处是,它提供了主键(primary key)的唯一性验证。通常, 在大型表中使用索引特别有效。 虽然使用索引能得到查询效率的提高,但是我们也必须注意到它的代价。 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改。这意味着每条记录的INSERT , DELETE , UPDATE将为此多付出4 , 5 次的磁盘I/O 。因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢。定期的重构索引是有必要的。

谈谈你对oracle,对Oracle的优化相关推荐

  1. oracle临时表经常被锁_5.性能测试 - Oracle体系结构和性能优化简介

    体系结构 Oracle体系结构示意图 Oracle服务器: Oracle服务器是一个数据库管理系统,它为信息管理提供了开放.综合和集成的方法,包括Oracle实例和 Oracle数据库. Oracle ...

  2. 将oracle优化器改为CBO,【DB.Oracle】Oracle 优化器 (RBO, CBO)

    Oracle优化器 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基于规则 ...

  3. oracle awr报告生成_5.性能测试 - Oracle体系结构和性能优化简介

    体系结构 Oracle体系结构示意图 Oracle服务器: Oracle服务器是一个数据库管理系统,它为信息管理提供了开放.综合和集成的方法,包括Oracle实例和 Oracle数据库. Oracle ...

  4. Oracle OR条件的优化与改写

    一. 同一字段谓词条件的or 1. 构造测试表 create table t_do as select * from dba_objects; create index t_do_n1 on t_do ...

  5. Oracle 性能调整与优化-程国华-专题视频课程

    Oracle 性能调整与优化-353人已学习 课程介绍         在本课程中,学员们将基于Oracle数据库掌握其性能调整的关键要素以及调整优化方法,包括从物理层面规划,系统层面参数设置,存储子 ...

  6. Oracle 数据库的性能优化

    oracle数据库的性能优化 对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整, ...

  7. Oracle提高命中率及优化

    本文是关于Oracle数据库调试与优化方面的文章,主要介绍Oracle数据库中命中率相关的问题,包括不同的算法之间性能的比对.**编辑向您推荐<Oracle数据库调试与性能优化> 关于Or ...

  8. 崔华 oracle简历,Oracle ACE崔华解析Oracle数据库优化器

    [IT168专稿]第三届Oracle技术嘉年华再度来袭!作为国内顶尖级别的Oracle数据库技术盛会,现场邀请到Jonathan Lewis,Tim Gorman等Oracle数据库领域国际级专家,特 ...

  9. oracle tps 性能,Oracle性能究极优化 下

    正在看的ORACLE教程是:Oracle性能究极优化 下. 我们有理由相信采用新的内核版本(2.2.16-3 smp)也应该有性能的提升: OS2: Newer minor version kerne ...

  10. Oracle SQL语句性能优化方法大全

    下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.选择最有效率的表名顺序(只在 ...

最新文章

  1. 2021年大数据Flink(八):Flink入门案例
  2. Linux01-Linux高级特殊权限SUID详解25
  3. Codejock的使用--皮肤
  4. 自己的模块给其他人调用是怎么打包的_webpack实战——模块打包
  5. 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----ICMP篇
  6. 记一道面试题:STL两个栈实现一个队列。
  7. android 融云sdk集成,使用融云SDK集成
  8. RNN 循环神经网络系列 5: 自定义单元
  9. (转)关于BigDecimal 转化字符串toPlainString()和toString()的区别
  10. 六子棋计算机博弈关键技术研究,六子棋计算机博弈系统的研究与实现-计算机应用技术专业论文.docx...
  11. oracle 中 使用 begin end 批量更新,删除资料
  12. APP推广什么是cpa,cps,cpm
  13. 下载文件时报错:无法复制文件,无法读源文件或磁的解决方法
  14. 输出今天是星期几并计算n天后的日期(万年历)
  15. flash player 9 安装错误:您尝试安装的adobeflashplayer版本不是最新版本
  16. Android监听前后台切换展示开屏广告
  17. ABB机器人6.13版手册下载
  18. c语言编程实现简单的注册登录,C语言编程:实现用户的注册和登录
  19. python俄罗斯方块编程思路_少儿编程分享:手把手教你用Python编写俄罗斯方块(十)...
  20. 使用BDC进行Miro录屏时的公司代码弹窗问题

热门文章

  1. 《从强盗资本家到慈善家》--转载自思维的乐园
  2. CCF202104-1 灰度直方图
  3. Java-常见的工具类-字符串
  4. mysql fn_2019 数据库趋势报告,最受欢迎的是 MySQL
  5. spring框架做全局异常捕获_springboot springmvc抛出全局异常的解决方法
  6. DTC精彩回顾—金学东:从可迁到好迁:人大金仓打造国产数据库生态 助力企业国产化转型...
  7. 资源放送丨《并行不悖——Oracle数据库并行的是是非非》PPT视频
  8. 只需这10步,通过历史控制文件恢复数据库
  9. 《PostgreSQL 指南:内幕探索》之基础备份与时间点恢复(上)
  10. 辞旧迎新:2018年的分区你们建了吗?