sql优化(oracle)- 第三部分  sql优化总结

第三部分  sql优化总结
        1. 优化一般原则
        2. 具体注意事项

1. SQL优化一般性原则
  1)目标:减少服务器资源消耗(主要是磁盘IO)
  2)设计:
    1. 尽量依赖oracle优化器
    2. 合适的索引(数据重复量大的列不要简历二叉树索引,可以使用位图索引; 对应数据操作频繁的表,索引需要定期重建,减少失效的索引和碎片)
  3)编码:
    1. 利用索引
    2. 合理利用临时表
    3. 避免写过于复杂的sql;
    4. 尽量减小事务的粒度

2. 具体注意事项
  1)查询时尽量使用确定的列名
  2)尽量少使用嵌套的子查询,这种查询很消耗cpu资源
  3)多表查询的时候,选择最有效率的表名顺序
   oracle解析器对表的处理顺序从右到左,所以记录少的表放在右边(最右边的表为基础表,drivering table最先被处理), 如果3个以上的表连接查询,则要选择交叉表作为基础表
  4)or比较多时分为多个查询,使用union all(尽量用union all代替union)联结(适应于索引列)
  5) 尽量多用commit提交事务,可以及时释放资源、解锁、释放日志
  6)访问频繁的表可以放置在内存中
  7)避免复杂的多表关联
  8)避免distinct,union(并集),minus(差集),intersect(交集),order by等耗费资源的操作,因为会执行耗费资源的排序功能
  9)使用exists替代distinct
   select c.distinct c.classname, c.classid, classno from student s, class c where s.classno= c.classno;
  --替换为
   select  classname, classid, classno from class c where exists (select * from student s where s.classno = c.classno);

    delete删除时,没有commit前可以回滚;truncate后不能回滚,执行时间较短
   11)使用表的别名,可以减少解析时间
   12)exists和in的选择问题,不同时候区分对待
   13)合理使用索引

时间: 2024-07-28 17:00:27

sql优化(oracle)- 第三部分  sql优化总结的相关文章

经典案例:如何优化Oracle使用DBlink的SQL语句

转自 https://blog.csdn.net/Enmotech/article/details/78788083 作者介绍 赵全文 就职于太极计算机股份有限公司,在中央电化教育馆做Oracle DBA的驻场运维工作.具有3年左右的Oracle工作经验,目前擅长Oracle数据库的SQL脚本编写.故障诊断和性能优化,并且乐于分享Oracle技术. 一般在DBLINK的SQL语句中,将调用远程表的in-line view结果集返回的数据尽量减少,进而达到通过网络传输的数据减少的目的,而且也不会将

Oracle第三章——SQL语言

SQL语言是高级的结构化查询语言,大大减轻了用户的负担.目前查询语言分为四种,数据定义语言(DDL).数据操纵语言(DML). 事务控制语言(TCL).数据控制语言(DCL). 一.数据定义语言(DDL) 1.CREATE CREATE命令用于创建模式对象,如创建表的格式为:CREATE TABLE [schema.]table (column datatype [, column datatype]);,其中, schema是对象的持有者,即用户对应的模式,如果在用户自己的模式中创建则可以不指

SQL Server Alwayson搭建三:SQL服务器配置

安装.NET Framework 3.5/4.0 IP配置sql01sql02 安装SQL Server 2014,选择混合认证模式,设置sa密码 服务器加域,成功后选择重启服务器 使用dcadmin登录服务器,修改sqlserver服务帐号 关闭服务器防火墙至此,SQL服务器的基本配置已完成 原文地址:http://blog.51cto.com/aimax/2121555

oracle client及pl/sql连接配置

----------------------------------- 一.前言 二.环境 三.oracle client安装 四.oracle client配置 五.pl/sql连接 ----------------------------------- 一.前言 PL/SQL 是 Oracle公司在标准 SQL 语言上进行一定的扩展而形成的一种数据库语言.它寄托于传统的 SQL 语句,同时又在功能上做了不少的扩充.PL/SQL 有着太多的优势,甚至让SQL 在它面前也黯然失色.而 PL/SQ

SQL性能优化(Oracle)

首先要搞明白什么叫执行计划? 执行计划是数据库根据SQL语句和相关表的统计信息作出的一个查询方案,这个方案是由查询优化器自动分析产生的,比如一条SQL语句如果用来从一个 10万条记录的表中查1条记录,那查询优化器会选择"索引查找"方式,如果该表进行了归档,当前只剩下5000条记录了,那查询优化器就会改变方案,采用 "全表扫描"方式. 可见,执行计划并不是固定的,它是"个性化的".产生一个正确的"执行计划"有两点很重要: (1)

Oracle 建立索引及SQL优化

Oracle 建立索引及SQL优化 数据库索引: 索引有单列索引 复合索引之说 如何某表的某个字段有主键约束和唯一性约束,则Oracle 则会自动在相应的约束列上建议唯一索引.数据库索引主要进行提高访问速度. 建设原则: 1.索引应该经常建在Where 子句经常用到的列上.如果某个大表经常使用某个字段进行查询,并且检索行数小于总表行数的5%.则应该考虑. 2.对于两表连接的字段,应该建立索引.如果经常在某表的一个字段进行Order By 则也经过进行索引. 3.不应该在小表上建设索引. 优缺点:

Oracle数据库该如何着手优化一个SQL

这是个终极问题,因为优化本身的复杂性实在是难以总结的,很多时候优化的方法并不是用到了什么高深莫测的技术,而只是一个思想意识层面的差异,而这些都很可能连带导致性能表现上的巨大差异.所以有时候我们应该先搞清楚需求到底是什么,SQL本身是否合理,这些思考很可能会使优化工作事半功倍.而本文是假设SQL本身合理,从Oracle提供给我们的一些技术手段来简单介绍下Oracle数据库,该如何使用一些现有的技术来优化一个SQL执行的性能. 确定需要优化的SQL文本及当前SQL执行计划 确定SQL涉及的所有表及其

Oracle 12C 某电信公司 优化一个12小时跑不出来的SQL,最后6分钟就跑完了

今天一个网友找我帮他优化他负责数据库的SQL,客服反映这个SQL 跑很久,跑了12个小时,最后跑出ORA-01555 ,以报错结束了这个慢SQL的生命.找我帮他优化,OK ,义不容辞. 他们那边数据库环境是Oracle 12C的: 原SQL 及其执行计划为: explain plan for select count(*) from (select A.service_code, A.accNo, A.phone_no, A.account_type, nvl(B.mtNo, 0) mt fro

Oracle删除一条SQL在Shared Pool里缓存的执行计划的三种方法

在Oracle里第一次执行一条SQL语句后,该SQL语句会被硬解析,而且执行计划和解析树会被缓存到Shared Pool里.方便以后再次执行这条SQL语句时不需要再做硬解析,方便应用系统的扩展.但是如果该SQL对应的表数据量突变或其他原因,Shared Pool里缓存的执行计划和解析树已经不再适用于现在的情况,SQL执行效率急速下降,这种情况下就需要把该SQL缓存在Shared Pool里的执行计划和解析树清理出去,以便对该SQL重新做硬解析,生成新的执行计划和解析树. 从Shared Pool