oracle是一个庞大的知识体系,各个知识点之间存在着错综复杂的立体网状关系,孤立的引用某个
论点四处应用,南辕北辙的结果恐怕往往会伴随在你左右。同时,Oracle版本众多,同一个知识点在不同的版本里常有一些应用上的
区别,这也是需要引起足够重视的。
建立索引
分析索引
虽然cost-base优化技术帮助了避免在查询中使用不被选中(nonselective)的索引,但是SQL引擎必然一直对表的所有索引进行维护,而不管这个索引是否被使用。在定操作很多的应用中,索引的维护会消耗非常巨大的CPU和I/O资源(resourse),换句话说,请不要建立不必要的索引。
为了最优性能,删除(drop)所有不被使用的索引。你可以通过使用“ALTER INDEX MONITORING USAGE”这个监控功能一段时间,以观察索引的使用情况。这个监控功能记录了一个索引是否被使用。注意选择合适的工作量负载去监控(Be careful to select a representative workload to monitor)。
Indexes within an application sometimes have uses that are not immediately apparent from a survey of statement execution plans. An example of this is a foreign key index on a parent table, which prevents share locks from being taken out on a child table.
你可以通过“EXPLAIN PLAN”语句去判断你将要建立的索引是否会被你的应用用上。
有一点要注意:当你在调整一个语句的性能是可能会影响到其他的语句。举个例子,你建立了一个索引给一语句使用,同时,oracle优化器也可能让其他的语句来使用这个索引。从这一点上来说,在你调整了这些语句后,最好重新检查这些语句的性能。
注:
你可以通过“Oracle Index TuningWizard”去检测一个表的索引的使用效率。类示的功能还存在于“Virtual Index Advisor”和“Oracle Expert”。
优化索引
维护索引
索引管理指导(guidelines):
1. 插入数据后,再建索引;
2. 如果你频繁的想去检索一张大表(retrieve)15%以下的行的话,那么就建立索引;
3. 为了提高联合查询的速度,往往有必要把联合用到的字段建立索引;
4. 小表没必要建立索引
5. 有必要建立索引的字段往往具有如下一个或者多个的特征:
a. 字段的值比较具有唯一性
b. 具有比较广的值域(wide range of values),适合建立普通(regular)索引
c. 具有比较窄的值域(small range of values),适合建立位图(bitmap)索引
d. 一个字段具有较多的null值,但是,查询语句往往只查具有值的行
6. 具有如下特征的行不合适建立索引:
a. 字段值中有很多null,同时,又不去检索那些非null值
b. long, long raw字段
7. 在CREATE INDEX语句中,几个字段[注:被建立复合索引的字段]之间的先后关系会影响查询的性能。
一般情况下,把最常用的字段放在[复合索引位置中]最前面。举例说明:如果一个索引由三个字段组成:
col1, col2, col3,那么,如果仅查询col1或者col1+col2,那么,这两都的查询速度都会加快,而那些
只查询col2、col2或者col2+col3的语句将不会用到这个索引
8. 索引并不是越多越好,要注意表检索和表更新之间的性能衡
9. 指明索引的区块空间使用(Specify Index Block Space Use):
如果你计划往被索引的表里插很多数据,那么,PCTFREE值应该比较大;而如果被索引的表的数据相对变
化较小,那么,PCTFREE可以小一点[个人建议,如果表数据总是存在比较大的变动,那么,每次变动后,
重建索引更合适]
10. 估计索引的大小,并设置[合理的]存储参数
11. 为索引指定表空间:
表和索引建立在不同的表空间有利于性能[如果只有一个物理磁盘的话,意义不大]
12. 建立索引时考虑采用并行技术(Consider Parallelizing Index Creation)
并行建立一个索引时,存储参数被每个[并行的]查询服务进程(query sever process)单独使用,因此,
一个采用12个并行,INITIAL参数为5M的索引建立过程至少要用掉60M的存储[空间]
13. 建立索引时考虑使用“NOLOGGING”[参数],[这能带来不少的好处]
分享到:
相关推荐
Oracle 索引与分区索引介绍 Oracle 索引与分区索引是 Oracle 数据库中两个重要的概念,它们都是为了提高查询性能和数据存储效率而设计的。在本文中,我们将详细介绍 Oracle 索引与分区索引的概念、特点、分类、创建...
Oracle 索引 使用方法,索引 使用原理, 索引 使用顺序过程
Oracle数据库中的索引是优化查询性能的关键工具,它允许快速定位和访问数据。常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构...
本文将深入探讨Oracle索引的原理、创建方法,并结合SQL优化策略,帮助你提升数据库查询速度,降低资源消耗。 首先,我们要理解索引的基本概念。在数据库中,索引类似于书籍的目录,它为数据提供快速访问的途径。...
### Oracle索引优化相关知识点详解 #### 一、基本索引概念 在Oracle数据库中,索引是提高数据检索速度的重要工具。通过查询`DBA_INDEXES`视图,可以获取到当前数据库中所有表的所有索引信息。需要注意的是,如果...
总的来说,Oracle索引机制的深入理解对于数据库性能调优、查询优化和系统设计都具有重要意义。正确使用索引可以显著提高查询速度,降低响应时间,提升用户体验,但同时也需要平衡索引对写操作的影响,以确保系统的...
Oracle 索引是数据库管理系统中提升数据查询速度的关键组件,尤其在大型企业级应用中,选择合适的索引类型对于数据库性能至关重要。本篇文章将深入探讨Oracle中的B*Tree索引、反向索引、降序索引、位图索引和函数...
本笔记主要探讨了两个关键概念:约束和索引,这些都是Oracle数据库中的基础但至关重要的元素。 **1. 约束(Constraints)** 约束是Oracle数据库中用于确保数据完整性的规则。它们分为以下几种类型: - **非空约束...
oracle 索引的原理原理深入理解!
### Oracle索引类型详解 #### 一、B\*Tree索引:数据检索的基石 在Oracle数据库中,B\*Tree索引是最常见的索引结构,也是默认创建的索引类型。它基于二叉树原理,由分支块(branch block)和叶块(leaf block)构成,...
Oracle索引被限制的一些情况 Oracle索引是关系数据库管理系统中用于提高查询效率的一种机制,但是索引的使用也存在一些限制。本文将详细介绍一些常见的限制情况,帮助开发人员更好地使用索引,提高查询效率。 限制...
"数据库创建索引SQL Oracle" 数据库索引是数据库性能优化的重要手段之一。创建索引可以提高查询速度,降低数据库的负载,提高数据的安全性。本文将详细介绍数据库创建索引的原则、分类、创建方法、管理和优化等方面...
oracle的索引,非常适合初学者,介绍索引的分类,如何创建,修改等
Oracle索引优化是数据库性能调优的关键环节,它关乎到数据检索速度和整体系统的效率。在Oracle数据库中,索引的种类繁多,包括B*Tree索引、反向索引、降序索引、位图索引和函数索引等。理解并正确使用这些索引类型...
### Oracle索引的基本概念 #### 1. 创建索引 索引是数据库中一种用于提高数据检索速度的数据结构。通过创建索引,可以显著提升查询性能。例如,在`student`表上创建一个基于`sno`列的索引: ```sql CREATE INDEX ...
Oracle数据库是世界上最广泛使用的数据库系统之一,其性能优化的一个关键因素就是索引的使用。索引可以帮助快速查找和访问数据库中的数据,显著提高查询效率。本篇将详细讲解Oracle数据库中的索引及其重要性。 一、...
Oracle索引的创建、简介、技巧,希望可以给学习Oracle的人带来帮助!
Oracle 索引是数据库管理系统中提升数据查询速度的关键技术。本文主要介绍Oracle数据库中不同类型的索引及其内部结构,以及各种索引的工作原理和适用场景。 首先,Oracle使用平衡树(B-Tree)作为其索引的基础结构...