恰当控制事务大小,commit不要过于频繁。
在OLTP系统中一定要注意使用绑定变量。
谨用或尽量不要使用in/exists、not in/not exists方式,而应该使用直接连接方式替换。
嵌套循环连接中非常大的表作内表(被驱动表)时,其连接字段上需建有索引。
在返回的结果集大于1万行时,不建议使用嵌套循环连接,应考虑使用哈希连接或排序合并连接进行替换。
两个无序大表的连接,在连接字段无索引时,不建议使用合并排序连接。
含有多表的SQL语句,必须明确指定各表的连接条件,以避免产生迪卡尔积。
在执行频度高,又含有排序操作的SQL语句中,建议使用索引来避免排序操作。
在删除(delete)、插入(insert)、更新(update)频繁的表中,建议不要使用位图索引。
在删除(delete)、插入(insert)、更新(update)操作频繁,而数据又来源于序列的字段上建议尽量不要建立索引。
尽量使用前端匹配的模糊查询(like),以通过使用索引来避免全表扫描。
在建立复合索引时,尽量把最常用的字段放在最前面,尽量把离散值较少的字段往前放,同时还要尽量保证复合索引中至少有一个字段具有非空约束。
不要在选择性较低的字段上建立索引。
尽量不要在较长字符串的字段上建立索引,如char(1000)、varchar2(1000)等。
不要在语句的where条件中对字段进行数学表达式运算。
在where条件中对字段使用函数,会导致用不上索引,可以考虑建立函数索引。
在业务逻辑允许的情况下,尽量使用union all来代替union。
如果SQL语句针对同一个字段做多个选择(or)条件,建议考虑使用no_expand提示来避免串联(concatenation)操作。
用case语句合并多次表扫描
慎用distinct、union、order by、group by语句,因为这些语句会引起排序,在无法消除排序的情况下尽量不要使用。
当使用索引产生的逻辑I/O远远大于表扫描时,应该屏蔽索引,如果字段为数值型的就在表达式后面“+ 0”,为字符型的就并上一个“空串”。
删除分区表数据时,建议考虑使用truncate进行整分区的删除。
对于大批量数据的删除,要考虑使用特殊方式处理,不要使用delete方式。
分享到:
相关推荐
Oracle 优化常用概念 Oracle 优化器是 Oracle 数据库管理系统中一个核心组件,负责根据用户提交的 SQL 语句生成最优的执行计划,以提高查询效率。以下是 Oracle 优化器中的一些常用概念: CBO/RBO Oracle 优化...
"基于成本的Oracle优化法则"是一个重要的概念,它涉及到Oracle数据库查询优化器的工作原理。在这个主题中,我们将深入探讨这一法则,理解其背后的机制,并学习如何利用这些知识来提升数据库性能。 1. **基于成本的...
《Oracle优化日记——一个金牌DBA的故事》这本书深入浅出地揭示了Oracle数据库优化的精髓。作为一名金牌DBA,作者以其丰富的实战经验,通过一系列的实际案例,讲述了在Oracle数据库管理与优化过程中的种种挑战和解决...
Oracle 优化器介绍 Oracle 优化器是 Oracle 数据库中的一种核心组件,负责生成执行计划,以提高 SQL 语句的执行效率。 Oracle 优化器可以分为两大类:基于规则的优化器(RBO)和基于成本的优化器(CBO)。 基于...
Oracle优化设计方案旨在提升数据库性能,确保数据安全,便于管理和开发。设计Oracle数据库时,需要遵循一系列基本原则和步骤。 首先,逻辑建模是根据系统需求分析数据间的内在和外在关系,构建整个系统的数据结构。...
### Oracle优化重量级知识点解析 #### 一、Oracle优化的重要性 在数据库管理领域,Oracle数据库因其卓越的性能、稳定性和安全性而被广泛采用。然而,随着业务量的增长和技术的发展,即使是像Oracle这样的顶级...