1.没有将表数据和索引数据存储到不同的表空间中,而不加区别地将它们存储到同一表空间里。这样,不但会造成I/O竞争,也为数据库的维护工作带来不便。
2.索引是数据库中重要的数据结构,它的根本目的就是为了提高查询效率
。现在大多数的数据库产品都采用IBM最先提出的ISAM索引结构。索引
的使用要恰到好处,其使用原则如下:
在经常进行连接,但是没有指定为外键的列上建立索引,而不经常连
接的字段则由优化器自动生成索引。
在频繁进行排序或分组(即进行group by或order by操作)的列
上建立索引。
在条件表达式中经常用到的不同值较多的列上建立检索,在不同值少
的列上不要建立索引。比如在雇员表的“性别”列上只有“男”与“女
”两个不同值,因此就无必要建立索引。如果建立索引不但不会提高查
询效率,反而会严重降低更新速度。
建立索引语法
CREATE [UNIQUE] INDEX 索引名 ON 表名 (列名) TABLESPACE 表空间名
3.把表的一个子集进行排序并创建临时表,有时能加速查询。它有助于避
免多重排序操作,而且在其他方面还能简化优化器的工作。例如:
SELECT cust.name,rcvbles.balance,……other columns
FROM cust,rcvbles
WHERE cust.customer_id = rcvlbes.customer_id
AND rcvblls.balance> 0
AND cust.postcode> “98000”
ORDER BY cust.name
如果这个查询要被执行多次而不止一次,可以把所有未付款的客户找出
来放在一个临时文件中,并按客户的名字进行排序:
SELECT cust.name,rcvbles.balance,……other columns
FROM cust,rcvbles
WHERE cust.customer_id = rcvlbes.customer_id
AND rcvblls.balance> 0
ORDER BY cust.name
INTO TEMP cust_with_balance
然后在临时表中查询: SELECT * FROM cust_with_balance WHERE postcode> “98000”
4.如果使用null值判断将导致引擎放弃使用索引而进行全表扫描如:
select id from t where num is null;
在这种情况下可以将num默认值设为0,确保表中没有null值,
然后:select id from t where num =0;
如果是varchar2型的话可以根据情况设定默认值,
这样避免了全表的扫描。
5.通配符‘%’当通配符出现在搜索词首时,Oracle优化器不使用索引。
Select * from employee where name like ‘%Z%’;
Select * from employee where name like ‘Z%’;
第二句的执行效率会比第一句快,但查询结果集可能会不同。
DISTINCT总是建立一个排序,所以查询速度也慢。
使用它时就不要用GROUP BY
In 和not in 也要少使用,使用in 使系统无法索引,只能直接搜索
select id from t where num in(1,2,3);
对于连续的数字,使用between:
select id from t where num between 1 and 3;
有时可以使用exists代替in
避免在where 后面出现表达式
Select id from t wherer num/2=20;
应该改为:Select id from t where num=20*2
6.create table t_partition_range (id number,name varchar2(50)) 2 partition by range(id)( 3 partition t_range_p1 values less than (10) tablespace tbspart01, 4 partition t_range_p2 values less than (20) tablespace tbspart02, 5 partition t_range_p3 values less than (30) tablespace tbspart03, 6 partition t_range_pmax values less than (maxvalue) tablespace tbspart04 7 );
只有在建立了分区表之后才能建立分区索引
create index idx_parti_range_id on t_partition_range(id) 2 global partition by range(id)( 3 partition i_range_p1 values less than (10) tablespace tbspart01, 4 partition i_range_p2 values less than (40) tablespace tbspart02, 5 partition i_range_pmax values less than (maxvalue) tablespace tbspart03);
7.普通索引 SQL > CREATE INDEX INDEX_NAME ON TABLE (COLUMN) local ( partition part_idx_01 tablespace index_space01, partition part_idx_02 tablespace index_space02, partition part_idx_03 tablespace index_space03 ) 2.唯一索引 如:主键 SQL > CREATE UNIQUE INDEX INDEX_NAME ON TABLE (COLUMN) local ( partition part_idx_01 tablespace index_space01, partition part_idx_02 tablespace index_space02, partition part_idx_03 tablespace index_space03 )
8.SQL > CREATE [UNIQUE] INDEX INDEX_NAME ON TABLE(COLUMN) global partition by range(column) ( partition part_idx_01 value less than(first range value) tablespace index_space01, partition part_idx_02 value less than(second range value) tablespace index_space02, partition part_idx_03 value less than(maxvalue) tablespace index_space03 )
当对大数据量进行并发操作时,可能根据字段建立分区索引
如时间:可根据月份或者年份建立分区索引,这样查询时只查分区,而不需要
扫描全表
1.分区字段不是主键的情况下,只可以创建全局分区索引,不可以创建本地主键分区索引. 只有分区字段为主键时才可以创建本地主键分区索引. 2.如果创建本地唯一分区索引,除指定索引字段外还要加上表分区字段. 这种索引意义不大:因为这样构成复合索引,索引改变,约束也改变了. 3.如果创建非唯一索引则不需要表分区字段. 4.创建全局分区索引后可以创建约束.
9.以上的东西是我在百度文库看到的,觉得写得很好,就抄录下来了,以供自己以后学习!
分享到:
相关推荐
《基于成本的Oracle优化法则》是数据库专家Jonathan Lewis的一部经典著作,该书深入探讨了Oracle数据库的性能优化策略,特别是在成本基础优化方面。Oracle数据库是全球广泛使用的大型企业级数据库系统,其性能优化...
Oracle 优化常用概念 Oracle 优化器是 Oracle 数据库管理系统中一个核心组件,负责根据用户提交的 SQL 语句生成最优的执行计划,以提高查询效率。以下是 Oracle 优化器中的一些常用概念: CBO/RBO Oracle 优化...
"基于成本的Oracle优化法则"是一个重要的概念,它涉及到Oracle数据库查询优化器的工作原理。在这个主题中,我们将深入探讨这一法则,理解其背后的机制,并学习如何利用这些知识来提升数据库性能。 1. **基于成本的...
Oracle 优化器介绍 Oracle 优化器是 Oracle 数据库中的一种核心组件,负责生成执行计划,以提高 SQL 语句的执行效率。 Oracle 优化器可以分为两大类:基于规则的优化器(RBO)和基于成本的优化器(CBO)。 基于...
Oracle优化设计方案旨在提升数据库性能,确保数据安全,便于管理和开发。设计Oracle数据库时,需要遵循一系列基本原则和步骤。 首先,逻辑建模是根据系统需求分析数据间的内在和外在关系,构建整个系统的数据结构。...
### Oracle优化重量级知识点解析 #### 一、Oracle优化的重要性 在数据库管理领域,Oracle数据库因其卓越的性能、稳定性和安全性而被广泛采用。然而,随着业务量的增长和技术的发展,即使是像Oracle这样的顶级...
### Oracle优化方法与实践 #### 一、优化器模式选择 在进行Oracle数据库优化时,首先需要关注的是优化器模式的选择。Oracle提供了多种优化器模式,包括基于规则的优化器(RULE)、基于成本的优化器(COST)以及...
本篇将围绕"Oracle 优化 金牌 DBA 日记"这一主题,深入探讨Oracle数据库优化的相关知识点。 1. **索引优化**:索引是提升查询性能的关键工具。金牌DBA会根据查询模式和数据分布情况创建和维护索引,如B树索引、位图...
资源名称:基于成本的Oracle优化法则内容简介:数据库领域的超级畅销书,世界级Oracle大师Jonathan Lewis的最新力作,也是近几年来Oracle领域最重要的著作之一,荣获2006年年度Oracle杂志编辑选择大奖。自该书出版...
基于成本的Oracle优化法则是一种科学的方法,用于确保数据库查询的高效执行。本篇文章将深入探讨这一主题,旨在帮助数据库管理员(DBA)和开发人员理解并应用这些法则来提升系统性能。 首先,我们要理解什么是基于...
《Oracle优化日记——一个金牌DBA的故事》这本书深入浅出地揭示了Oracle数据库优化的精髓。作为一名金牌DBA,作者以其丰富的实战经验,通过一系列的实际案例,讲述了在Oracle数据库管理与优化过程中的种种挑战和解决...
《基于成本的Oracle优化法则》是一本深入探讨Oracle数据库性能优化的专业书籍,共计573页,涵盖了Oracle数据库优化的方方面面。这本书对于Oracle数据库管理员、开发人员以及对数据库性能优化有需求的技术人员来说,...
Oracle优化器是Oracle数据库中一个重要的组件,负责在数据库执行SQL查询时,选择最有效的执行计划。理解Oracle优化器的工作原理和案例对于数据库管理员来说至关重要,可以帮助他们调整和优化SQL执行,从而提高数据库...
### Oracle优化器深入解析 #### Oracle优化器概览 Oracle数据库优化器负责分析SQL语句并确定执行查询的最有效方式。它通过考虑多种因素,包括表和索引的统计数据,来选择最佳的执行计划。Oracle优化器经历了从基于...
《Oracle优化日记》是两本深入探讨Oracle数据库性能优化的专业书籍,由金牌DBA撰写,旨在分享其在实际工作中的经验和技巧。Oracle优化是数据库管理中的核心任务,它关乎系统的响应速度、资源利用率以及整体性能。这...
"基本成本的Oracle优化法则"这一主题涵盖了数据库性能提升的多个重要方面。源代码的分享通常是为了帮助开发者和DBA(数据库管理员)深入理解Oracle的工作原理,从而更有效地进行性能调优。下面,我们将详细探讨这些...
《Oracle优化日记:一个金牌DBA的故事》这本书深入探讨了Oracle数据库的性能优化技术,是DBA们不可或缺的参考资料。作者通过自身丰富的实战经验,分享了一系列解决实际问题的方法和策略,帮助读者理解Oracle数据库的...
### Oracle优化教程知识点详解 #### 一、选用适合的Oracle优化器 在Oracle数据库中,优化器的选择对于SQL语句的执行效率至关重要。Oracle提供了三种优化器类型:基于规则(RULE)、基于成本(COST)和选择性...
### Oracle优化工具详解 在IT领域,特别是在数据库管理与维护方面,Oracle数据库因其稳定性和强大的功能而被广泛采用。为了确保Oracle数据库能够高效运行并满足业务需求,一系列的优化工具应运而生。本文将围绕...