关于oracle数据库索引的一些学习记录

1、索引的特点
        a、对具有只读我或较少插入、更新或删除操作的大表可以提高查询速度。
        b、可以对表的一列或多列建立索引。
        c、建立索引的数量没有限制。
        d、索引需要磁盘存储,需要oracle自动维护。
        e、索引对用户透明,是否使用索引是由oracle决定的。

2、RDBMS访问数据的基本方法
        a、全表扫描
        b、通过ROWID
        c、使用索引

3、增加索引会带来insert语句性能的下降。

4、索引的扫描类型
        a、索引唯一扫描(INDEX UNIQUE SCAN)
        b、索引范围扫描(INDEX RANGE SCAN)
        c、索引全扫描(INDEX FULL SCAN)
        d、索引快速扫描(INDEX FAST FULL SCAN)

5、限制索引使用的情况
        1)、使用不等于运算符(<>、!=),在where中使用不等于条件会使索引失效。
        2)、使用IS NULL或IS NOT NULL
        3)、使用函数,一些常见的函数如trunc substr to_date to_char instr等。
        4)、比较不匹配的数据类型。

6、查看执行计划示例
        SQL>explain plan for select * from emp;
        SQL>select * from table(dbms_xplan.display);

7、建立索引示例
        1)、创建索引表空间
        SQL> create tablespace index_tbs datafile ‘/u1/index/index_tbs1.dbf‘
size 100M autoextend on;
        2)、建立索引
        SQL> create index emp_ename_sal_idx
                on emp(ename,sal)
                tablespace index_tbs;
        3)、建立索引全语句
        SQL>create [unique | bitmap] index [schema.]index_name
                on [schema.]table_name
                (column_name [desc | asc],column_name[desc | asc])
                [reverse]    ==>创建反向索引
[tablespace tablespace_name]
                [pctfree n]  ==>索引块中预先保留的空间比例
                [initrans n] ==>每个索引块中分配的事务数
                [maxtrans n] ==>每个索引块中最多的事务数
                [instorage state] ==>索引中区段EXTENT如何分配
                [logging | nologging]  ==>要记录|不要记录索引的相关操作
                [nosort]  ==>不要在创建索引时再按键值进行排序

8、查看用户索引
        SQL>select * from user_indexes;
        SQL>select * from user_idx_columns;

9、监控索引的使用
        1)、打开索引使用监控
        SQL>alter index PK_EMP monitoring usage;
        2)、关闭索引使用监控
        SQL>alter index PK_EMP nomonitoring usage;
        3、查看索引使用情况
        SQL>select * from v$object_usage;

10、重建索引并迁移表空间示例
        SQL>alter index PK_EMP
                rebuild
                tablespace index_tbs1;
        重建地索引不影响用户使用索引,但不能使用DEL操作和DML操作。

11、维护索引
        1)、手工增加索引磁盘空间
        SQL>alter index PK_EMP
                allocate extent;
        2)、合并索引碎片
        SQL>alter index PK_EMP coalesce;

12、删除索引
        SQL>drop index PK_EMP

时间: 2024-10-12 14:48:55

关于oracle数据库索引的一些学习记录的相关文章

SQL Server和Oracle数据库索引介绍

SQL Server和Oracle数据库索引介绍 1 SQL Server中的索引 索引是与表或视图关联的磁盘上结构,可以加快从表或视图中检索行的速度.索引包含由表或视图中的一列或多列生成的键.这些键存储在一个结构(B 树)中,使 SQL Server 可以快速有效地查找与键值关联的行. 表或视图可以包含以下类型的索引: 聚集索引 聚集索引根据数据行的键值在表或视图中排序和存储这些数据行.索引定义中包含聚集索引列.每个表只能有一个聚集索引,因为数据行本身只能按一个顺序排序. 只有当表包含聚集索引

oracle数据库索引(转)

.      索引分类Ø  按存储方法分类B*树索引:B*树索引是最常用的索引,其存储结构类似书的索引结构,有分支和叶两种类型的存储数据块,分支块相当于书的大目录,叶块相当于索引到的具体的书页.一般索引及唯一约束索引都使用B*树索引. 位图索引:位置索引储存在主要用来节省空间,减少Oracle对数据块的访问,它采用位图偏移方式来与表的行ID对应,采用位图索引一般是重复值太多的表字段.位图索引在实际密集型OLTP(数据事务处理)中用得比较少,因为OLTP会对表进行大量的删除.修改.新建操作,Ora

对数据库索引的数据结构学习

我前段时间一直在使用Oracle数据库,发现建立索引对查询速度的提升是很大的,就对这个比较好奇,把学习到的知识归列如下. 以Mysql为例,它的索引就是采用B树和B+树这种数据结构来实现的.大学里没好好学习数据机构,不过现在来补也还不晚~ B树,是一种使用文件存储时常用的数据结构结构,它是二叉查找树的升级版——可以多叉.因为在这种需要机械磁盘与主存交换数据的场景下,最耗费时间的其实是磁盘读取次数,也就是读写磁头要转到磁道上正确位置这种物理动作所花费的时间是远大于数据的传输的.以7200转每分钟的

Oracle数据库索引

在关系数据库中,索引是一种与表有关的数据库结构,它可以使对应于表的SQL语句执行得更快.索引的作用相当于图书的目录,可以根据目录中的页码快速找到所需的内容. 对于数据库来说,索引是一个必选项,但对于现在的各种大型数据库来说,索引可以大大提高数据库的性能,以至于它变成了数据库不可缺少的一部分. 索引分类: 逻辑分类 single column or concatenated    对一列或多列建所引 unique or nonunique  唯一的和非唯一的所引,也就是对某一列或几列的键值(key

oracle 数据库的体系结构和学习路线

1.什么关系型数据库? 基于关系模型建立的数据库,二维表来保存数据的模型就是关系模型 Oracle,MySQL,SQLServer 2.什么是NoSQL数据库? Key-Value保存数据库 HBase , Redis 3 .oracle数据库基本概念 (1) 一个oracle数据库和多个oracle实例 什么是数据库? 一个物理概念,硬盘上存储的文件 什么是实例?    把数据库的文件在内存中的镜像 集群(RAC:real  application cluster)?    一个数据库对应多个

浅谈oracle数据库索引

[什么是索引] 在关系型数据库中,索引是一种和表有关的数据结构,它可以使查询的sql语句执行的更快.其实索引就如同图书的目录,我们可以根据目录中的页码快速的找到所需的内容. 编写一本书,只有章节内容定好之后再设置目录:数据库索引也是一样,只有先插入好数据,再建立索引. [为何索引可提高查询效率] 因为DB在执行一条sql语句的时候,默认的方式是根据搜索条件进行全表扫描,遇到匹配条件就加入搜索结果集合.如果我们对某一字段增加索引,查询时就会先去索引列表中一次定位到特定值的行数,大大减少遍历匹配的行

Oracle 数据库备份还原(Expdp/impdp)记录

最近公司将原数据库服务器切换.之前没整过这块,也是一堆的度娘.经过不停的摸索,终于成功了.现在将这份艰辛记录下来,方便自己以后查阅的同时,方便有类似需求的同学参考. 我们此次切换共分:ERP.LOS.WMS三个系统. 因前期搭建,这三个系统均在同一实例.以不同的表空间.用户区分. 此次切换思路: 1)以实例的方式备份.还原.命令 Exp/imp (命令不再叙述) 优点:省事.可整体导出还原.内网之间切换,可远程备份(如:将 192.168.1.1 备份至 192.168.1.2); 结果:失败;

Oracle数据库索引使用及索引失效总结

容易引起oracle索引失效的原因很多: 1.在索引列上使用函数.如SUBSTR,DECODE,INSTR等,对索引列进行运算.需要建立函数索引就可以解决了. 2.新建的表还没来得及生成统计信息,分析一下就好了 3.基于cost的成本分析,访问的表过小,使用全表扫描的消耗小于使用索引. 4.使用<>.not in .not exist,对于这三种情况大多数情况下认为结果集很大,一般大于5%-15%就不走索引而走FTS. 5.单独的>.<. 6.like "%_"

Oracle数据库——索引、视图、序列和同义词的创建

一.涉及内容 1.理解索引的概念和类型. 2.掌握创建索引的命令. 3.理解视图的概念和优点. 4.理解可更新视图应具备的特点. 5.掌握创建一般视图和可更新视图的命令. 6.理解序列和同义词的概念和作用. 7.掌握序列的创建与应用. 8.掌握同义词的创建与应用. 二.具体操作