索引的使用对数据库的性能有巨大的影响。
共有五类不同的使用模式。
1。INDEX UNIQUE SCAN 效率最高,主键或唯一索引
2。INDEX FULL SCAN 有顺序的输出,不能并行读索引
3。INDEX FAST FULL SCAN 读的最块,可以并行访问索引,但输出不按顺序
4。INDEX RANGE SCAN 给定的区间查询
5。INDEX SKIP SCAN 联合索引,不同值越少的列,越要放在前面
--实验后的总论。
能用唯一索引,一定用唯一索引
能加非空,就加非空约束
一定要统计表的信息,索引的信息,柱状图的信息。
联合索引的顺序不同,影响索引的选择,尽量将值少的放在前面
只有做到以上四点,数据库才会正确的选择执行计划。
conn system/manager
grant select any dictionary to scott;
conn scott/tiger
drop table t1 purge;
create table t1 as select * from dba_objects;
analyze table t1 compute statistics;
create index it1 on t1(object_type);
set autot traceonly
select distinct object_type from t1;
将是全表扫描,为什么不使用索引呢?因为索引中不能含有null值,
如果使用索引就可能产生不正确的结果。
--增加非空约束
alter table t1 modify (object_type not null);
select distinct object_type from t1 ;
使用INDEX FAST FULL SCAN方式查找数据
--
select object_type from t1;
使用INDEX FAST FULL SCAN,因为不需要排序
select object_type from t1 order by 1;
使用INDEX FULL SCAN,因为要按照顺序输出
select object_type from t1 where object_type='TABLE';
使用INDEX RANGE SCAN
--使用非唯一索引
create index i2t1 on t1(object_id);
select * from t1 where object_id=3762;
使用INDEX RANGE SCAN,因为数据库不知道是否唯一
--使用唯一索引
drop index i2t1;
create unique index i2t1 on t1(object_id);
使用INDEX UNIQUE SCAN,因为数据库知道是唯一的
--跳跃的扫描索引
create index i3t1 on t1(object_type,object_name);
select * from t1 where object_name='EMP';
select object_name from t1 where object_name='EMP';
使用INDEX SKIP SCAN,因为数据库知道可以跳过object_type,虽然object_name在第二个列。
--联合索引的顺序不同,影响索引的选择,尽量将值少的放在前面
drop index i3t1;
drop index it1;
create index i3t1 on t1(object_name,object_type);
select * from t1 where object_type='TABLE';
计划为全表扫描。
分享到:
相关推荐
在Oracle数据库系统中,索引是一种重要的数据结构,它能够显著提升数据查询的效率。索引的使用是数据库性能优化的关键环节,尤其是在大型企业级应用中,对索引的合理设计和管理对于系统的运行速度至关重要。这篇博文...
Oracle数据库中的索引是优化查询性能的关键工具,它允许快速定位和访问数据。常见的索引类型包括B*树索引和位图索引,每种都有其特定的应用场景和优势。 1. **B*树索引**:这是最常见的索引类型,类似于二叉树结构...
### Oracle索引优化相关知识点详解 #### 一、基本索引概念 在Oracle数据库中,索引是提高数据检索速度的重要工具。通过查询`DBA_INDEXES`视图,可以获取到当前数据库中所有表的所有索引信息。需要注意的是,如果...
Oracle索引优化是数据库性能调优的关键环节,它关乎到数据检索速度和整体系统的效率。在Oracle数据库中,索引的种类繁多,包括B*Tree索引、反向索引、降序索引、位图索引和函数索引等。理解并正确使用这些索引类型...
- 反向索引是B*Tree索引的一种变体,特别适用于并行服务器环境,能减少索引叶块的争用。反向索引通过反转索引码的字节来分散数据,避免了序列号递增导致的索引块集中问题。这有助于提高并发性,减少锁冲突。 3. **...
Oracle数据库是世界上最广泛使用的数据库系统之一,其性能优化的一个关键因素就是索引的使用。索引可以帮助快速查找和访问数据库中的数据,显著提高查询效率。本篇将详细讲解Oracle数据库中的索引及其重要性。 一、...
总的来说,理解Oracle索引的工作原理并适当使用,是实现数据库高效运行的关键。正确选择和设计索引,避免使用限制索引的因素,能显著提高查询性能,减少数据库响应时间,从而提升整个系统的性能。在实践中,需要结合...
### Oracle索引类型详解 #### 一、B\*Tree索引:数据检索的基石 在Oracle数据库中,B\*Tree索引是最常见的索引结构,也是默认创建的索引类型。它基于二叉树原理,由分支块(branch block)和叶块(leaf block)构成,...
首先,Oracle使用平衡树(B-Tree)作为其索引的基础结构。B-Tree是一种自平衡的树形数据结构,它保证了在树的任意层级上,所有节点到根节点的距离大致相同。这样,无论数据如何分布,查找特定值的时间复杂度都可以...
Oracle索引是数据库管理系统中用于加速数据检索的关键结构。它们的工作原理类似于书籍的目录,允许数据库系统快速定位和访问特定的数据行,而无需扫描整个表。Oracle提供了多种类型的索引,包括B树索引、位图索引、...
### Oracle索引失效的原因及解决方法 在Oracle数据库中,索引是提高查询效率的关键工具之一。然而,在实际的应用过程中,由于多种原因可能会导致索引失效,从而影响系统的性能。本文将详细介绍Oracle索引失效的一些...
综上所述,Oracle数据库的索引创建是一个涉及多个方面的工作,需要综合考虑数据量、查询模式、空间利用率等因素,以确保系统的高效运行。在实际操作中,根据具体业务需求,合理创建和管理索引是提升数据库性能的关键...
4. **OD**:创建完成后将索引切换为日志模式。 ```sql ALTER INDEX IDX_INFO_CUSTOMER_3 LOGGING; ``` 5. **OE**:将索引的并行度调整回1。 ```sql ALTER INDEX IDX_INFO_CUSTOMER_3 PARALLEL 1; ``` #### ...
本文将深入探讨Oracle中索引的八种使用模式,帮助理解如何利用索引提升数据库性能。 ### 1. INDEX UNIQUE SCAN(唯一扫描) 当查询需要获取基于唯一键的单行数据时,Oracle会使用INDEX UNIQUE SCAN。这种模式确保...
### Oracle为何有时不使用索引来查找数据 Oracle数据库在处理SQL查询时,会根据一系列复杂的因素决定是否使用索引以及如何高效地检索数据。本文将深入探讨Oracle在哪些情况下可能会选择不使用索引的原因,并解释...
Oracle索引是提升查询速度的关键结构,它由根节点、分支节点和叶子节点构成。根节点指向分支节点,分支节点再指向叶子节点,叶子节点包含索引值和对应行的ROWID,使得数据检索更高效。`DBA_INDEXES`视图提供了关于...