索引的使用对数据库的性能有巨大的影响。
共有五类不同的使用模式。
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 index index索引的8种使用模式
Oracle优化器模式与Oracle索引优化规则.pptx
Oracle Spatial是甲骨文公司针对空间数据管理的一组插件, 其针对存储在Oracle Spatial数据库中空间元素提供了一种SQL 模式和便于存储、检索、更新、查询...Oracle Spatial提供了两种索引机制 即R树索引和四叉树索引。
查找原因的步骤 首先,我们要确定数据库运行在何种优化模式下,相应的参数是:optimizer_mode。可在svrmgrl中运行“showparameteroptimizer_mode”来查看。ORACLEV7以来缺省的设置应是”choose”,即如果对已分析的...
本文主要讨论以下几种索引访问方法: 1.索引唯一扫描(INDEX UNIQUE SCAN) 2.索引范围扫描(INDEX RANGE SCAN) 3.索引全扫描(INDEX FULL SCAN) 4.索引跳跃扫描(INDEX SKIP SCAN) 5.索引快速全扫描(INDEX FAST FULL ...
熟悉Oracle中权限分类和设置,理解系统提供用户的角色和权限5.熟练使用建立用户、角色,为用户授权、授予角色的命令 【实验内容】1.创建一个TESTUSER用户,密码为test,默认表空间为users表空间2.创建用户后为其授予...
Oracle 产品和服务 1-5 Oracle Database 10 g :“g”代表网格 1-6 Oracle 数据库体系结构 1-8 数据库结构 1-9 Oracle 内存结构 1-10 进程结构 1-12 Oracle 实例管理 1-13 服务器进程和数据库缓冲区高速缓存 ...
1 序言 2 2 影响SQL PERFORMANCE的关键因素和配置: 2 ...3.11.5 基于成本的优化器(CBO)会对索引的选择性进行判断,来决定是否使用索引 11 3.11.6 Index信息的重新统计 11 3.12 识别 “低效运行”的SQL语句 11
Oracle 产品和服务1-5 Oracle Database 10g:“g”代表网格1-6 Oracle 数据库体系结构1-8 数据库结构1-9 Oracle 内存结构1-10 进程结构1-12 Oracle 实例管理1-13 服务器进程和数据库缓冲区高速缓存1-14 物理数据库...
索引,包括B树索引、基于函数的索引、位图索引、反向索引、降序索引、压缩索引等的使用方法及其适用情形等。在案例精讲中,对表压缩、约束的使能与失能、表的层次结构查询、防止删除表及对象、提取创建外键约束的...
2 Oracle 服务器入门 目标 2-2 数据库管理工具 2-3 Oracle 通用安装程序 2-4 交互式安装 2-5 使用反应文件的非交互式安装 2-6 Oracle 数据库配置助手 2-8 最优灵活体系结构(OFA) 2-9 Oracle 软件和文件位置 2-10 ...
第5章 熟悉SQL*Plus-Oracle数据库环境 5.1 进入和退出SQL*Plus环境 5.1.1 启动SQL*Plus 5.1.2 创建SQL*Plus快捷方式 5.1.3 退出SQL*Plus环境 5.2 SQL*Plus编辑器的编辑命令 5.2.1 编辑命令 5.2.2 保存...
ORACLE的优化器共有3种: a. RULE (基于规则) b. COST (基于成本) c. CHOOSE (选择性) 设置缺省的优化器,可以通过对init.ora文件中OPTIMIZER_MODE参数的各种声明,如RULE,COST,CHOOSE,ALL_ROWS,FIRST_ROWS . 你...
第5章 使用热备用数据库 5.1 什么是失败切换 5.2 热备用数据库 5.2.1 热备用数据库的优点 5.2.2 热备用数据库的缺点 5.2.3 建立和配置热备用数据库 5.2.4 创建备用数据库作为主数据库的 一个子集 5.2.5 选择...
其一、就业面广:全球前100强企业99家都在使用ORACLE相关技术,中国政府机构,大中型企事业单位都能有ORACLE技术的工程师岗位。 其二、技术层次深:如果期望进入IT服务或者产品公司(类似毕博、DELL、IBM等),...