谈谈你对oracle,对Oracle的优化
(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的优化相关推荐
- oracle临时表经常被锁_5.性能测试 - Oracle体系结构和性能优化简介
体系结构 Oracle体系结构示意图 Oracle服务器: Oracle服务器是一个数据库管理系统,它为信息管理提供了开放.综合和集成的方法,包括Oracle实例和 Oracle数据库. Oracle ...
- 将oracle优化器改为CBO,【DB.Oracle】Oracle 优化器 (RBO, CBO)
Oracle优化器 Oracle数据库中的优化器又叫查询优化器(Query Optimizer).它是SQL分析和执行的优化工具,它负责生成.制定SQL的执行计划.Oracle的优化器有两种,基于规则 ...
- oracle awr报告生成_5.性能测试 - Oracle体系结构和性能优化简介
体系结构 Oracle体系结构示意图 Oracle服务器: Oracle服务器是一个数据库管理系统,它为信息管理提供了开放.综合和集成的方法,包括Oracle实例和 Oracle数据库. Oracle ...
- Oracle OR条件的优化与改写
一. 同一字段谓词条件的or 1. 构造测试表 create table t_do as select * from dba_objects; create index t_do_n1 on t_do ...
- Oracle 性能调整与优化-程国华-专题视频课程
Oracle 性能调整与优化-353人已学习 课程介绍 在本课程中,学员们将基于Oracle数据库掌握其性能调整的关键要素以及调整优化方法,包括从物理层面规划,系统层面参数设置,存储子 ...
- Oracle 数据库的性能优化
oracle数据库的性能优化 对于ORACLE数据库的数据存取,主要有四个不同的调整级别,第一级调整是操作系统级包括硬件平台,第二级调整是ORACLE RDBMS级的调整,第三级是数据库设计级的调整, ...
- Oracle提高命中率及优化
本文是关于Oracle数据库调试与优化方面的文章,主要介绍Oracle数据库中命中率相关的问题,包括不同的算法之间性能的比对.**编辑向您推荐<Oracle数据库调试与性能优化> 关于Or ...
- 崔华 oracle简历,Oracle ACE崔华解析Oracle数据库优化器
[IT168专稿]第三届Oracle技术嘉年华再度来袭!作为国内顶尖级别的Oracle数据库技术盛会,现场邀请到Jonathan Lewis,Tim Gorman等Oracle数据库领域国际级专家,特 ...
- oracle tps 性能,Oracle性能究极优化 下
正在看的ORACLE教程是:Oracle性能究极优化 下. 我们有理由相信采用新的内核版本(2.2.16-3 smp)也应该有性能的提升: OS2: Newer minor version kerne ...
- Oracle SQL语句性能优化方法大全
下面列举一些工作中常常会碰到的Oracle的SQL语句优化方法: 1.SQL语句尽量用大写的: 因为oracle总是先解析SQL语句,把小写的字母转换成大写的再执行. 2.选择最有效率的表名顺序(只在 ...
最新文章
- 2021年大数据Flink(八):Flink入门案例
- Linux01-Linux高级特殊权限SUID详解25
- Codejock的使用--皮肤
- 自己的模块给其他人调用是怎么打包的_webpack实战——模块打包
- 对现有的所能找到的DDOS代码(攻击模块)做出一次分析----ICMP篇
- 记一道面试题:STL两个栈实现一个队列。
- android 融云sdk集成,使用融云SDK集成
- RNN 循环神经网络系列 5: 自定义单元
- (转)关于BigDecimal 转化字符串toPlainString()和toString()的区别
- 六子棋计算机博弈关键技术研究,六子棋计算机博弈系统的研究与实现-计算机应用技术专业论文.docx...
- oracle 中 使用 begin end 批量更新,删除资料
- APP推广什么是cpa,cps,cpm
- 下载文件时报错:无法复制文件,无法读源文件或磁的解决方法
- 输出今天是星期几并计算n天后的日期(万年历)
- flash player 9 安装错误:您尝试安装的adobeflashplayer版本不是最新版本
- Android监听前后台切换展示开屏广告
- ABB机器人6.13版手册下载
- c语言编程实现简单的注册登录,C语言编程:实现用户的注册和登录
- python俄罗斯方块编程思路_少儿编程分享:手把手教你用Python编写俄罗斯方块(十)...
- 使用BDC进行Miro录屏时的公司代码弹窗问题
热门文章
- 《从强盗资本家到慈善家》--转载自思维的乐园
- CCF202104-1 灰度直方图
- Java-常见的工具类-字符串
- mysql fn_2019 数据库趋势报告,最受欢迎的是 MySQL
- spring框架做全局异常捕获_springboot springmvc抛出全局异常的解决方法
- DTC精彩回顾—金学东:从可迁到好迁:人大金仓打造国产数据库生态 助力企业国产化转型...
- 资源放送丨《并行不悖——Oracle数据库并行的是是非非》PPT视频
- 只需这10步,通过历史控制文件恢复数据库
- 《PostgreSQL 指南:内幕探索》之基础备份与时间点恢复(上)
- 辞旧迎新:2018年的分区你们建了吗?